Git 分支管理

分支的作用

开发新功能或者修复bug时一般会用到分支,既不影响别人的工作,也能让自己的工作实现小步提交,还能保证主分支clean。

分支相关的操作

创建与合并分支

查看当前分支 git branch

git branch命令会列出所有分支,当前分支前面会标一个*号。

创建分支 git branch <name>

切换到master分支:git checkout master

<name>是分支的名字

切换分支 git checkout <name>

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

git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:
git branch dev
git checkout dev

创建远程分支git push --set-upstream origin <name>(这条命令不用记,git push就行,git会提示你push到远程需要的命令)

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

git merge命令用于合并指定分支当前分支
dev分支合并到master分支(注意此处要先切换到master分支):git merge dev

删除分支 git branch -d <name>

删除dev分支git branch -d dev

删除后最好再查看一下分支 git branch

删除远程分支git push origin --delete <name>

修改分支名称

本地,需要修改名称的分支不是当前分支:
git branch -m oldName newName
如果是当前分支改名字:
git branch -m newName

远程分支重命名
如果修改远程分支,只需要将本地分支重命名为新分支名称,然后删除远程分支,再把本地分支上传就可以了

查看分支合并图 git log --graph

bug分支

可能会遇到这种情况:正在dev分支上开发,工作进行到一半也没办法push,此刻需要修改一处bug,如何解决?
Git还提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作:
git stash
之后再用git status查看工作区,就是clean的(除非有 没有被git管理的文件),此刻就可以创建新的分支来修复bug.

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

修复bug后,提交修改,(这里的提交只是commit,不是push)换回master分支,完成合并,删除issue-01分支:
git merge --no-ff -m "merged bug fix 101" issue-01

完成!是时候回到dev分支继续干活了:git checkout dev

此时看一下工作区仍然是clean:git status
git stash list命令看一下:
git stash list

工作现场还在,Git把stash内容存在某个地方了,但是需要恢复一下,有两个办法:

  • git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;
  • git stash pop恢复的同时把stash内容也删了

恢复后再用git stash list查看,就看不到任何stash内容了.

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

清空stash中的内容:git stash clear

多人协作

推送分支git push origin <name>

  • 推送到主分支:git push origin master
  • 推送到其他分支,例如dev分支:git push origin dev

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

如果遇到push失败,有冲突的话,先git pull.(但是讲道理,我觉得多人协作情况下,每次push之前应该先pull,解决完冲突再push)

如果git pull失败了,可能原因是没有指定本地dev分支与远程origin/dev分支的链接(一般都会有提示),根据提示,设置dev和origin/dev的链接:
git branch --set-upstream-to=origin/dev dev
之后再git pull,然后再push.

查看远程库信息git remote -v


References:
[1] 廖雪峰:分支管理

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 冲突合并 创建分支feature1分支,在feature1中修改readme文件,然后在分支中添加并提交, $gi...
    奋斗中的Kevin阅读 3,851评论 0 1
  • 1. 创建与合并分支 在Git里每次提交会被串成一条时间线,这条时间线就是一个分支.而HEAD是指向当前分支,当前...
    程序员七哥阅读 3,610评论 0 5
  • 创建与合并分支 git branch 分支007 -----创建分支007 git checkout 分支007 ...
    xlayzheng阅读 1,607评论 0 0
  • 问, 情觅何处? 却忆, 樱花灿烂人相睦。 到如今, 秋风落叶月伴孤, 满目相思尽酸楚。 一夜春风桃花沐, 满园花...
    东北老农阅读 3,283评论 3 15
  • "当日子只剩下生活,只剩下你一个人,只有这个时候,一切真才会显现出来,像是退潮后的沙滩,不再拥有海浪的声讨和庇护。...
    Gigi熊阅读 1,405评论 0 3

友情链接更多精彩内容