git合并分支策略(git命令使用理解及分支的创建合并冲突问题解决)

使用git init 命令创建一个本地仓库

git合并分支策略(git命令使用理解及分支的创建合并冲突问题解决)(1)

得到的文件结构如下图:

git合并分支策略(git命令使用理解及分支的创建合并冲突问题解决)(2)

git合并分支策略(git命令使用理解及分支的创建合并冲突问题解决)(3)

使用git status 命令查看工作区状态

git合并分支策略(git命令使用理解及分支的创建合并冲突问题解决)(4)

git add 命令添加工作区文件到仓库

git合并分支策略(git命令使用理解及分支的创建合并冲突问题解决)(5)

git合并分支策略(git命令使用理解及分支的创建合并冲突问题解决)(6)

分别修改f.txt文件两次,每次增加一行代码后保存,然后运行git add f.txt

我们发现每次文件修改保存后,只要文件有变化,就会在objects目录下有新的文件夹生成,其实这里就是存放我们每次文件的记录的。经测试文件没有修改,运行git add f.txt是没有变化的。

git合并分支策略(git命令使用理解及分支的创建合并冲突问题解决)(7)

提交文件(git commit)

git commit -m "first"

-m参数是备注的意思后面跟着我们这次提交的备注信息。

git合并分支策略(git命令使用理解及分支的创建合并冲突问题解决)(8)

提交后查看工作区状态

git合并分支策略(git命令使用理解及分支的创建合并冲突问题解决)(9)

git log查看日志

git合并分支策略(git命令使用理解及分支的创建合并冲突问题解决)(10)

查看提交详情(git show)

git show 24acb470df451a7b6c97d9bc64ff971ce7403d72

git diff命令查看文件不同

git合并分支策略(git命令使用理解及分支的创建合并冲突问题解决)(11)

第一行运行时没有任何结果,因为我们刚comiit(提交)了代码,所以工作区与仓库的内容没有不同。当我们将e.txt文档增加了一行aaaa后,运行git diff将会看到对比后的结果。

git reset命令恢复工作区到指定的更新点

git合并分支策略(git命令使用理解及分支的创建合并冲突问题解决)(12)

运行命令git reset --hard c551ecc634efc9e1339f2e35347d4ff704ce1615

git合并分支策略(git命令使用理解及分支的创建合并冲突问题解决)(13)

这时我们在打开f.txt,e.txt发现文件内容的确恢复到当时内容的情况了。

git合并分支策略(git命令使用理解及分支的创建合并冲突问题解决)(14)

git branch -l查看分支命令

git中分支的意思是以当前master为基准开出一个新的分支,仓库在创建时就有一个默认分支master.如下图:

git合并分支策略(git命令使用理解及分支的创建合并冲突问题解决)(15)

下面我们根据实例看一下到底分支是怎么起作用的

创建我们创建一个仓库,然后在工作区创建一个a.txt文档,添加一行内容:111,然后添加到索引区(add),然后提交(commit)。

git合并分支策略(git命令使用理解及分支的创建合并冲突问题解决)(16)

创建新的分支

git branch b1

切换到新的分支

git checkout b1

git合并分支策略(git命令使用理解及分支的创建合并冲突问题解决)(17)

这时我们分支b1里保存的就是从master复制来的文件快照,当我们切换到分支b1后修改一下a.txt增加一行内容:222,然后add(添加到索引区),然后再commit(提交)

git合并分支策略(git命令使用理解及分支的创建合并冲突问题解决)(18)

以上部分我们分支b1和分支master内容就不相同了.其中master中的a.txt还是只有一行内容:111

我们先checkout 到master下

git checkout master

然后打开a.txt查看内容如下:

git合并分支策略(git命令使用理解及分支的创建合并冲突问题解决)(19)

然后我们切换到b1分支下

git checkout b1

然后打开a.txt查看内容如下:

git合并分支策略(git命令使用理解及分支的创建合并冲突问题解决)(20)

以上就演示了git神奇的分支功能,我们可以在代码某一个版本后,开一个分支,继续编写另一套程序。最常见的应用场景之一就是我们比如在做好一套web框架后,基于这个框架开分支编写具体的应用程序。

分支的合并

上面说了分支可以将多套代码分别管理的功能,当然git中分支的强大功能还不局限于此。下面我们讨论一下分支的合并功能。

接着上面的步骤,我们在分支b1中给a.txt内容增加了一行:222,那么现在master中a.txt内容还是:111,如果我们想把b1分支合并来,那怎么做?答案是使用git merge命令。

git合并分支策略(git命令使用理解及分支的创建合并冲突问题解决)(21)

这时在master下查看a.txt内容与b1分支查看文件内容都是同样的两行内容了。(也就是实现了把b1分支下的文件内容合并到了mater下)

git合并分支策略(git命令使用理解及分支的创建合并冲突问题解决)(22)

关于分支冲突的产生

如果说上一步合并前,我们修改master分支下的a.txt,我们增加了一行内容:aaa,并提交了。这时如果我们运行合并命令时,会有出错提示:

git合并分支策略(git命令使用理解及分支的创建合并冲突问题解决)(23)

因为我们这时master分支下a.txt内容为:

111

aaa

而b1分支下a.txt内容为:

111

222

因而在合并时出现了冲突

git合并分支策略(git命令使用理解及分支的创建合并冲突问题解决)(24)

至于 冲突的处理,我们继续看

git合并分支策略(git命令使用理解及分支的创建合并冲突问题解决)(25)

如上图,出现冲突后,git已经在出现冲突的文件里给我们标记好冲突的位置及内容,我们修改好文件后,使用git add 然后git commit把修改好的文件提交到我们的master分支里即可。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页