快捷搜索:  汽车  科技

git分支的新建与合并(Git通俗易懂系列四)

git分支的新建与合并(Git通俗易懂系列四)$ git checkout -b hotfix 这相当于执行下面这两条命令:我把要新建的分支取名为 hotfix。要新建并切换到该分支,运行 git checkout 并加上 -b 参数:$ git checkout testing 这样 HEAD 就指向了 testing 分支。HEAD 在你转换分支(checkout)时指向新的分支。每次提交后 HEAD,随着分支一起向前移动。非常有趣,现在 testing 分支向前移动了一格,而 master 分支仍然指向原先 git checkout 时所在的 commit 对象。现在我们回到 master 分支看看:

分支简介

使用 Git branch 命令创建分支:$ git branch testing

Git 如何知道你当前在哪个分支上工作的呢?

它保存着一个名为 HEAD 的特别指针。它和Subversion、CVS 里的 HEAD 概念大不相同。在 Git 中,它是一个指向你正在工作中的本地分支的指针(将 HEAD 想象为当前分支的别名)。

运行 git branch 命令,建立了一个新的分支,如果要切换到新分支,执行:

$ git checkout testing

这样 HEAD 就指向了 testing 分支。

HEAD 在你转换分支(checkout)时指向新的分支。每次提交后 HEAD,随着分支一起向前移动。

非常有趣,现在 testing 分支向前移动了一格,而 master 分支仍然指向原先 git checkout 时所在的 commit 对象。现在我们回到 master 分支看看:

分支的新建与合并

我把要新建的分支取名为 hotfix。要新建并切换到该分支,运行 git checkout 并加上 -b 参数:

$ git checkout -b hotfix

这相当于执行下面这两条命令:

$ git branch hotfix $ git checkout hotfix

合并分支:

$ git merge hotfix

删除分支:

$ git branch -d hotfix 遇到冲突时的分支合并

如果在不同的分支中都修改了同一个文件,Git 就无法干净地把两者合到一起。

比如,合并iss53分支:

$ git merge iss53 Auto-merging index.html CONFLICT (content): Merge conflict in index.html Automatic merge failed; fix conflicts and then commit the result.

以用 git status 查阅,未解决的文件会显示unmerged(未合并):

你自己提交:

git分支的新建与合并(Git通俗易懂系列四)(1)

可以运行 git fetch origin 同步远程服务器上的数据到本地。会把 origin/master 的指针移到它最新的位置上:

git分支的新建与合并(Git通俗易懂系列四)(2)

fetch 操作下载代码后,你仍然无法在本地编辑该远程仓库中的分支。本地的代码并没有变,有的只是一个你无法移动的 origin/master 指针。

如果要把该远程分支的内容合并到当前分支,可以运行 git merge命令。

git pull 相当于fetch merge命令。

从远程分支 checkout 出来的本地分支,称为 跟踪分支 (tracking branch)。在跟踪分支里输入 git push,Git 会自行推断应该向哪个服务器的哪个分支推送数据。同样, git pull 会获取所有远程索引,并把它们的数据都合并到本地分支中来。

推送本地分支

git push (远程仓库名) (分支名)。如:

$ git push origin serverfix 或者: $ git push origin serverfix:serverfix 删除远程分支

1、可以用非常无厘头的语法来删除它:git push [远程名] :[分支名]。如果想在服务器上删除 serverfix 分支,运行下面的命令:

$ git push origin :serverfix

git分支的新建与合并(Git通俗易懂系列四)(3)

猜您喜欢: