git 常用命令总结

git常用命令总结

转载至:https://www.cnblogs.com/fanyegong/p/5127780.html

一、定义:以下均使用括号中的简称

工作区:workspace (W)

暂存区:index (I)

本地仓库:local repository (L)

远程仓库:remote repository (R)

二、常用命令:

1.初始化

git init

2.常用配置信息 

(如果不使用--global,则只设置当前项目的配置信息)

设置代理:

git config --global http.proxy http://xxx.com:port

取消代理:

git config --global --unset http.proxy

设置用户名:

git config --global user.name "[name]"  

设置邮箱: 

git config --global user.email "[email address]" 

设置命令行颜色:

git config --global color.ui auto

查看用户名:

git config --global user.name

配置crlf:

git config --global core.autocrlf [true/false/input]

(在windows下设置为true,则提交的内容是LF,本地是CRLF)

配置文件名大小写敏感:(git默认不区分文件名大小写)

(可以新增文件,但是之前文件还没有删除) git config core.ignorecase false 

(可以尝试) git mv --force myfile myFile

3.添加--从工作区W到暂存区I

添加单个文件/多个文件/目录:

git add [file1] [file2] [directory] 

添加新增和修改的文件,不做删除操作:

git add . 

添加修改和删除的文件,不做新增操作:

git add -u

添加增删改的文件:等于git add .;git add -u;  

git add -A

4.提交:

(1)从暂存区I到本地仓库L

git commit -m [提交信息]

(2)

5.撤销

(1)从暂存区I到工作区W

git rm --cached <file> ...

(2)恢复到HEAD版本

git reset --hard HEAD

(3)修改提交的用户名信息

git commit --amend --author="Author Name <email@address.com>"

6.远程

- 更改远程仓库地址

git remote set-url origin http://xxx.xx.com/x.git

- 查看远程仓库地址

git remote show origin

- 本地项目与远程git地址进行关联,比如项目初始化,新建的项目可以使用

git remote add origin https://xxx.xxx.xxx.xxx/xxx/xxx-wechat-web.git

- 查看远程仓库日志

git log origin/master

(3)比较本地分支和远程分支

git diff master origin/master

(4)查看远程分支

git branch -r

(5)拉取远程

方法1:拉取并合并

git pull

拉取远端指定分支代码:

git pull origin 分支名称

方法2:先拉取后合并

git fetch origin

git merge origin/master

(6)查看本地分支和远程分支的差异

git diff master origin/master

(7)基于远程分支创建本地分支

git checkout -b feature origin/feature

7.分支

查看分支:git branch

查看远程分支的本地copies:git branch -r

查看远程分支: git ls-remote

查看所有分支: git branch -a

创建分支:git branch <origin/name>

切换分支:git checkout <name>

创建+切换分支:git checkout -b <name> <origin/name>

合并某分支到当前分支:git merge <name>

删除分支:git branch -d <name>

删除远程分支: git push origin --delete

获取远程分支: git fetch

更新远程分支的本地copies: git fetch --prune origin

删除不存在的远程分支的信息:git remote prune origin

8.储藏

保存:git stash

查看stash列表:git stash list

恢复:git stash apply

恢复特定版本:git stash apply stash@{2}

清除某个stash记录:git stash drop stash@{0}

9.引用

(1)查看提交的哈希字串

git log

git log --pretty=oneline

查看历史中有xxx的

git log -G"删除掉的内容" -p

git log -S"删除掉的内容" -p

git log --grep "删除掉的内容"

git log -p | grep "删除掉的内容"

(2)查看某个提交

git show 0c708f(哈希)

(3)查看分支、标签或间接引用的哈希

git rev-parse master

(4)查看引用

在.git/refs目录下

git show refs/heads/some-feature

在.git目录下还有一些引用:

HEAD – 当前所在的提交或分支。

FETCH_HEAD – 远程仓库中fetch到的最新一次提交。

ORIG_HEAD – HEAD的备份引用,避免损坏。

MERGE_HEAD – 你通过git merge并入当前分支的引用(们)。

CHERRY_PICK_HEAD – 你cherry pick使用的引用。

(5)refspec

refspec的定义是这样的:[+]<src>:<dst>。<src>参数是本地的源分支,<dst>是远程的目标分支。可选的+号强制远程仓库采用非快速向前的更新策略。

(6)相对引用

git show HEAD~2 祖父节点

git show HEAD^2 第二个父节点(分支合并时,原所在分支是第一个父节点)

git show HEAD^2^1 可以多层

(7)引用日志

git reflog

gitcheckoutHEAD@{1}

10.代码回滚

reset checkout revert的选择

reset checkout 可以指定文件或某次提交,revert只针对提交,不针对文件

checkout revert 有可能会重写文件,在使用前要提交或缓存工作目录的修改

(1)reset(仅仅用在私有分支上,一般只用HEAD)

git checkout feature

git reset HEAD (末端两个提交变成悬挂提交,git垃圾回收时会被删除)

git reset --hard HEAD

--soft – 缓存区和工作目录都不会被改变

--mixed – 默认选项。缓存区和你指定的提交同步,但工作目录不受影响

--hard – 缓存区和工作目录都同步到你指定的提交

git reset HEAD file1.js 将HEAD提交中的该文件加入到缓存区,针对文件没有--mixed之类的参数

(2)checkout

git checkout feature 切换分支

git checkout HEAD~2 把HEAD移动到特定提交,但会造成HEAD分离非常危险,如果你接着添加新的提交,然后切换到别的分支之后就没办法回到之前添加的这些提交。因此,在为分离的HEAD添加新的提交的时候你应该创建一个新的分支

git checkout HEAD~2 file1.js 将工作目录的该文件同步到HEAD~2

(和git reset HEAD --hard很像,但只影响特定文件)

(3)revert(可以用在公共分支,不会影响历史,创建一个新的提交来撤销某个提交的修改)

git checkout feature

git revert HEAD~2 

11.打标签

(1)查看当前标签

git tag

(2)打标签

git tag -a v1.0.0 -m "my version v1.0.0"

(3)查看某个tag

git show v1.0.0

(4)删除某个tag

git tag -d v1.0.0

(4)把tag推送到远程

git push origin --tags

12.比较

git diff 工作区(W)跟暂存区(I)的区别(使用 f 翻下一页,使用b 翻上一页)

git diff HEAD工作区(W)跟本地仓库(L)的区别

git diff --staged 暂存区(I)跟本地仓库(L)的区别

(后边跟上文件名则只对比某个文件)

提交前比较某个文件

git diff -- myfile.js

git diff --cached myfile.js

比较时忽略空格变化

git diff -w (--ignore-all-space)

使用图形化工具查看比较

gitk &

设置图形化工具的编码

git config --global gui.encoding utf-8

13.打包

git archive --format zip --output /path/to/file.zip master

14.分支的衍合

git checkout feature

git rebase master

解决冲突后 git add .

git rebase --continue

15.只合并某个提交或者某个文件

git cherry-pick <commit id>  合并某一个提交

git cherry-pick -x <commit id> 合并某一个提交,并保留原提交的信息

git cherry-pick <start commit id>..<end commit id> 合并某个区间的提交,左开右闭

git cherry-pick <start commit id>^..<end commit id> 合并某个区间的提交,闭区间

git checkout branchname -- <paths>

git merge --no-ff --no-commit branchname  (不快速向前,不提交)

16.git 免重复登录方式

git本身支持SSH方式,在此不具体介绍了。

git支持credential的方式,在win7下可以设置credential helper为wincred,可以在"控制面板"--"用户账户"--"凭据管理器" 里查看凭据。

设置和取消凭证管理的方式:

git config --global --unset credential.helper

git config --global credential.helper wincred

17.git 设置命令别名

git config --global alias.co checkout 

git config --global alias.ci commit

git config --global alias.br branch

git config --global alias.lg "log --color --gragh --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(blod blue)<%an>%Creset' --abbrev-commit"

参考地址:http://blog.csdn.net/zhang31jian/article/details/41011313

18.git 判断代码最初是由谁提交的

git blame <filename>

git blame -L 100,100 <filenname>

git blame -L 100,+10 <filename>

三、常用场景:

1.创建新的库

mkdir tutorial

cd tutorial

git init

touch README.md

git add README.md

git commit -m "first commit"

git remote add origin http://xxx.xx.com/x.git

git push -u origin master

2.push已经存在的库

cd existing_repo

git remote add origin http://xxx.xx.com/x.git

git push -u origin master

3.merge request

git fetch origin

git checkout -b request-branch origin/request-branch

git checkout master

git merge --no-ff request-branch

git push origin master

 默认情况下,Git执行"快进式合并"(fast-farward merge),会直接将Master分支指向Develop分支。

使用--no-ff参数后,会执行正常合并,在Master分支上生成一个新节点。为了保证版本演进的清晰,我们希望采用这种做法。

4.github quick setup

(1)https://github.com/username/gittest.git

git@github.com:username/gittest.git

(2)create a new repository on the command line:

echo "# gittest" >> README.md

git init

git add REAME.md

git commit -m "first commit"

git remote add origin git@github.com:username/gittest.git

git push -u origin master

(3)push an existing repository from the command line

git remote add origin git@github.com:username/gittest.git

git push -u origin master

(4)import code from another repository

You can initialize the repository with code from a Subversion,Mercurial, or TFS project.

5.gitflow

参考链接:http://www.cnblogs.com/cnblogsfans/p/5075073.html

可以使用GUI工具SourceTree(http://blog.csdn.net/victor_barnett/article/details/51211282)

git flow init之后,配置文件和hooks分别在.git/config  .git/hooks/

初始化:git flow init

开始新Feature:git flow feature start MYFEATURE

Publish一个Feature(也就是push到远程):git flow feature publish MYFEATURE

获取Publish的Feature:git flow feature pull origin MYFEATURE

完成一个Feature:git flow feature finish MYFEATURE

开始一个Release:git flow release start RELEASE [BASE]

Publish一个Release:git flow release publish RELEASE

发布Release:git flow release finish RELEASE

别忘了git push --tags

开始一个Hotfix:git flow hotfix start VERSION [BASENAME]

发布一个Hotfix:git flow hotfix finish VERSION


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345

推荐阅读更多精彩内容

  • git常用命令 git config 可选参数(--system所有用户、--global当前用户、默认--loc...
    天痕丶阅读 318评论 0 0
  • 简介   git有四个工作区域,分别是:工作目录(Workspace)、暂存区(Index/Stage)、本地仓库...
    gybguohao阅读 21,029评论 4 21
  • 我们在工作中经常会使用到Git,可是有时候命令太多记不住,为此我整理了一份文档,方便大家记忆和参考! 下面几个是...
    梦幻的心爱阅读 408评论 0 1
  • 基础命令 用户设置 初始化仓库 把文件添加到仓库 把文件提交到仓库 添加文件到Git仓库 分两步: 第一步,使用命...
    前端渣渣阅读 1,447评论 0 20
  • 一般来说,日常使用只要记住下图6个命令,就可以了。但是熟练使用,恐怕要记住60~100个命令。 下面是我整理的常用...
    MiracleJQ阅读 342评论 0 0