Git 分支管理

分支的作用

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

分支相关的操作

创建与合并分支

查看当前分支 git branch

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

创建分支 git branch

切换到master分支:git checkout master

是分支的名字

切换分支 git checkout

创建并切换分支 git checkout -b

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

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

合并分支到当前分支 git merge

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

删除分支 git branch -d

删除dev分支git branch -d dev

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

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

修改分支名称

本地,需要修改名称的分支不是当前分支:
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

  • 推送到主分支: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

你可能感兴趣的:(git)