我们在合并分支时并不总是一帆风顺,有些时候也会遇到“合并冲突”的问题。
下面我们来还原一下:
-
创建分支
dev
$ git checkout -b dev 切换到一个新分支 'dev' $ git branch * dev master
-
我们将
text.txt
内容改为欢迎关注CSDN@keduo
并将修改的内容提交到
dev
分支中$ sed -i 's/csdn@keduo/欢迎关注CSDN@keduo/g' text.txt $ git commit -am 'changed the text.txt' [dev 6b78911] changed the text.txt 1 file changed, 1 insertion(+), 1 deletion(-)
拓展:
在Ubuntu中,可以使用不同的方法来修改文件内容。以下是几种常见的方法:
-
使用文本编辑器:可以使用默认的文本编辑器(如Gedit或Nano)或其他编辑器(如Vim或Emacs)来打开文件并编辑内容。例如,要打开一个文件并使用Gedit编辑器进行编辑,可以在终端中输入以下命令:
gedit 文件名
复制代码
这将在Gedit中打开指定的文件,然后你可以对其中的内容进行编辑并保存。
-
使用命令行编辑器:在终端中,可以使用命令行编辑器(如sed或awk)来修改文件内容。例如,要使用sed编辑器在文件中替换文本,可以使用以下命令:
sed -i 's/旧文本/新文本/g' 文件名
复制代码
这将在文件中将所有的旧文本替换为新文本。
-
使用重定向操作符:可以使用重定向操作符(>或>>)将输出重定向到文件中。例如,要将输出附加到文件末尾,可以使用以下命令:
命令 >> 文件名
复制代码
这将运行指定的命令,并将其输出追加到文件末尾。
-
-
现在,切换回 master 分支我们可以看内容恢复到我们修改前的,我们再次修改
text.txt
文件并提交$ git checkout master 切换到分支 'master' $ cat text.txt csdn@keduo $ sed -i 's/csdn@keduo/CSDN@keduo感谢你的关注/g' text.txt $ cat text.txt CSDN@keduo感谢你的关注 $ git branch dev * master $ git commit -am '修改代码' [master 3f3bdf2] 修改代码 1 file changed, 1 insertion(+), 1 deletion(-)
现在,
master
分支和dev
分支各自都分别有新的提交 -
现在这些改变已经记录到
master
分支了。接下来将dev
分支合并过来$ git merge dev 自动合并 text.txt 冲突(内容):合并冲突于 text.txt 自动合并失败,修正冲突然后提交修正的结果。 $ cat text.txt <<<<<<< HEAD CSDN@keduo感谢你的关注 ======= 欢迎关注CSDN@keduo >>>>>>> dev
Git用
<<<<<<<
,=======
,>>>>>>>
标记出不同分支的内容 -
我们将前一个分支合并到 master 分支,一个合并冲突就出现了,接下来我们需要手动去修改它,然后再提交。
$ gedit text.txt $ cat text.txt 欢迎关注CSDN@keduo CSDN@keduo感谢你的关注 $ git diff diff --cc text.txt index a28e355,79ab186..0000000 --- a/text.txt +++ b/text.txt @@@ -1,1 -1,1 +1,2 @@@ + 欢迎关注CSDN@keduo +CSDN@keduo感谢你的关注
-
在 Git 中,
git status
也可以告诉我们冲突的文件,我们修改冲突文件后,用 git add 要告诉 Git 文件冲突已经解决,然后再提交。$ git status -s UU text.txt $ git add text.txt $ git status -s M text.txt $ git commit [master b65a6a5] Merge branch 'dev'
-
删除**
dev
**分支$ git branch -d dev 已删除分支 dev(曾为 6b78911)。 git branch * master