git常用命令总结

来源:互联网 发布:苏州大学网络计费系统 编辑:程序博客网 时间:2024/05/14 02:26
查看分支:git branch


创建分支:git branch <name>


切换分支:git checkout <name>


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


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


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


解决冲突

用带参数的git log也可以看到分支的合并情况

$ git log --graph --pretty=oneline --abbrev-commit

git status可以告诉我们冲突的文件


分支管理策略

合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。

如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可


以看出分支信息。


--no-ff参数,表示禁用Fast forward


$ git merge --no-ff -m "merge with no-ff" dev
因为本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去。


git log查看分支历史
$ git log --graph --pretty=oneline --abbrev-commit


合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,


而fast forward合并就看不出来曾经做过合并。


Bug分支

git stash  可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作

首先确定要在哪个分支上修复bug,假定需要在master分支上修复,就从master创建临时分支:
$ git checkout master
$ git checkout -b issue-101


修复完成后,切换到master分支,并完成合并,最后删除issue-101分支:
$ git checkout master
$ git merge --no-ff -m "merged bug fix 101" issue-101
$ git branch -d issue-101




现在,是时候接着回到dev分支干活了!
$ git checkout dev
Switched to branch 'dev'
$ git status
# On branch dev
nothing to commit (working directory clean)


工作区是干净的,刚才的工作现场存到哪去了?用git stash list命令看看:
$ git stash list
stash@{0}: WIP on dev: 6224937 add merge
工作现场还在,Git把stash内容存在某个地方了,但是需要恢复一下,有两个办法:


一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;


另一种方式是用git stash pop,恢复的同时把stash内容也删了:


再用git stash list查看,就看不到任何stash内容了:


$ git stash list
你可以多次stash,恢复的时候,先用git stash list查看,然后恢复指定的stash,用命令:

$ git stash apply stash@{0}

git branch -D <name>强行删除

查看远程库的信息,用git remote 或者,用git remote -v显示更详细的信息



推送分支


把该分支上的所有本地提交推送到远程库。推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上:


$ git push origin master
如果要推送其他分支,比如dev,就改成:


$ git push origin dev


从远程库clone时,默认情况下,只能看到本地的master分支。


要在dev分支上开发,就必须创建远程origin的dev分支到本地,于是用这个命令创建本地dev分支:
$ git checkout -b dev origin/dev
现在,就可以在dev上继续修改,然后,时不时地把dev分支push到远程




多人协作的工作模式通常是这样:


首先,可以试图用git push origin branch-name推送自己的修改;


如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;


如果合并有冲突,则解决冲突,并在本地提交;


没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!


如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name。


本地新建的分支如果不推送到远程,对其他人就是不可见的;


在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;

从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。



0 0
原创粉丝点击