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

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

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

得到的文件结构如下图:

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

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

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

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

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

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

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

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

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

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

提交文件(git commit)

git commit -m "first"

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

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

提交后查看工作区状态

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

git log查看日志

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

查看提交详情(git show)

git show 24acb470df451a7b6c97d9bc64ff971ce7403d72

git diff命令查看文件不同

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

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

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

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

运行命令git reset --hard c551ecc634efc9e1339f2e35347d4ff704ce1615

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

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

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

git branch -l查看分支命令

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

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

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

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

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

创建新的分支

git branch b1

切换到新的分支

git checkout b1

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

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

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

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

我们先checkout 到master下

git checkout master

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

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

然后我们切换到b1分支下

git checkout b1

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

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

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

分支的合并

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

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

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

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

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

关于分支冲突的产生

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

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

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

111

aaa

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

111

222

因而在合并时出现了冲突

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

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

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

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


分享到:


相關文章: