根据数据流向,已图片的形式表达Git常见操作
- 使用红色箭头代表:数据从远程到本地的流向
- 使用蓝色箭头代表:数据从本地到远程的流向
- 使用绿色箭头代表:误操作后,回退
- 附:git diff的操作场景
实例
背景:当本地修改、添加、提交,并推送时,Git提示:远程仓库与本地冲突。
冲突分析
- 使用
git fetch
命令,下载远程仓库最新代码 - 使用
git merge
命令,合并代码。此时会出现冲突提示 - 使用
git diff
命令,得到冲突详情
diff --git a/your_path/your_file.txt b/your_path/your_file.txt
index 163812b..a4f7cc5 100624
--- a/your_path/your_file.txt
+++ b/your_path/your_file.txt
@@ -3,11 +3,17 @@
第一行内容
第二行内容
+<<<<<<< HEAD
第二行内容 加上本地修改的内容
+=======
第二行内容 加上远程修改的内容
+>>>>>>> refs/remotes/origin/master
第n行内容
每段含义
diff --git a/your_path/your_file.txt b/your_path/your_file.txt
代表冲突的标题index 163812b..a4f7cc5 100624
代表Git的内部编号--- a/your_path/your_file.txt
代表远程文件的路径+++ b/your_path/your_file.txt
代表本地文件的路径@@ -3,11 +3,17 @@
代表Git对文件增删改的统计+<<<<<<< HEAD
代表本地修改内容起始位置+=======
代表远程修改内容的起始位置+>>>>>>> refs/remotes/origin/master
代表冲突内容结束位置
解决冲突
- 使用任意编辑器,打开冲突文件
your_path/your_file.txt
- 删除三行内容,再将改文件修改成自己想要的最终模样
+<<<<<<< HEAD
+=======
+>>>>>>> refs/remotes/origin/master
- 再次添加、提交、推送即可
附:深层原理
- 第一次推送失败后,本地代码到了仓库区
- 使用
git fetch
后,远程代码到了仓库区 - 使用
git merge
后,远程代码、本地代码带着冲突,都到了工作区 - 修改工作区文件后,一切从头开始走