创建分支并与推送到远程

创建分支应在代码改动前还是改动后

创建brach的动作, 是从当前branch的HEAD commit处开辟一个分路. 开辟新branch时, 相对于HEAD commit的情况, 本地文件可能有两种状态:

  • 没有任何改动

  • 代码有改动, 部分处于modified状态(修改但未ADD), 部分处于staged状态(ADD但未COMMIT)

如果代码没有改动, 创建分支后的开发流程就是标准的流程. 如果代码有改动, 无论改动处于哪种状态(modifiedstaged), 在创建分支之后, 这些改动都将跟随到新的分支上来. 使用git status在创建并切换分支前后, 看到的内容是完全相同的.

这是因为branch其实就是将一个个commit节点串联起来, 创建分支是在一个commit节点处引出一条分路, 分路的下一个节点一定也是一个commit. 而没有commit的改动是不会因分支而区别的.

本地创建分支

可以使用以下两种方式创建一个新的分支.

git branch [branch-name]

上面的指令会创建一个名为branch-name的分支, 但仍然停留在当前的分支, 而本地已经有这个分支了, 如果需要使用新分支, 需要手动切换过去.

git checkout -b [branch-name]

这个指令在创建新分支的同时, 就会切换到新的工作分支上. 如果创建分支前就有未提交的改动代码, 需要在新分支上使用, 使用这个指令会更方便.

同步新分支到远程

通过上面一步, 只是在本地创建了新的分支, 远程仓库中还没有这个新的分支. 将本地的新分支推送到远程, 在远程也同步创建一个新的分支, 需要首先切换到新分支下面, 使用如下的指令:

git push --set-upstream origin [origin-branch-name]
git push -u origin [origin-branch-name]

其中:

  • --set-upstream-u是等价的. 此参数的意思是指定当前的本地分支与远程分支的跟踪关系, 相当于在本地和远程远程之间建立绑定关系

  • origin代表远程

  • [origin-branch-name]远程分支的名称. 允许本地分支与远程分支不同, 但一般都会保持名称的一致, 避免混乱

最后更新于