💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
>[success] # 简单的冲突 1. 当你在编写代码时候已将将代码 `commit` 到本地仓库 2. 你的同事手快先提交了一次代码到了远程 3. 此时你本地仓库和远程仓库就会差一个历史版本 4. 当你提交自己本地仓库到远程,就会产生一次常见的冲突(不修改同一个文件相同位置) * **远端仓库上含有本地仓库没有的内容,所以这次 push 被拒绝了** ![](https://img.kancloud.cn/7e/85/7e85e5b6abab7b0f94ed5f751c22d70b_573x164.png) * **解决**:**先用 pull 把远端仓库上的新内容取回到本地和本地合并(此时本地和远程版本一致),然后再把合并后的本地仓库向远端仓库推送**,这次`pull`就完成了:远端仓库被取到了本地,**并和本地仓库进行了合并**。在这个时候,就可以再`push`一次了。由于现在本地仓库已经包含了所有远端仓库的 commits,所以这次`push`不会再失败 * **原理**: 这次`pull`操作发现不仅远端仓库包含本地没有的`commit`,本地仓库也包含远端没有的`commit`,就会把远端和本地的独有`commit`进行合并,自动生成一个新的`commit`,`push`提交时候也会带上这次合并的提交到远程 * **总结**:一个项目通常会有多个人进行协作开发,那么存在多人不确定时间的push,那么在你push以前,就先pull一下代码,确认本地仓库已经同步了中央仓库的更新内容后,然后在push提交就可以了 >[success] # 合并冲突(分支合并 和 他人代码合并) `merge`在做合并的时候,是有一定的自动合并能力的:如果一个分支改了 A 文件,另一个分支改了 B 文件,那么合并后就是既改 A 也改 B,这个动作会自动完成;如果两个分支都改了同一个文件,但一个改的是第 1 行,另一个改的是第 2 行,那么合并后就是第 1 行和第 2 行都改,也是自动完成 ![](https://img.kancloud.cn/0e/8a/0e8abb369ab9fcd1a95e7a6fc3c8d029_660x402.gif) ![](https://img.kancloud.cn/21/2d/212dae94411f607f8b174b4d626220a0_636x418.gif) * **如果修同一文件同一行产生冲突**,下图 `a.js` 发生了合并冲突,要求 "fix conflicts and then commit the result"(把冲突解决掉后提交) ![](https://img.kancloud.cn/0c/cc/0ccc9a87c1b36d50c4ddc60bfe5a8ed4_530x88.png) 冲突文件会被git 记录**用符号标记出了它们的边界以及它们的出处**,现在要做的就是选择你要合并的内容 ![](https://img.kancloud.cn/ee/a6/eea6ccd732ec194e7af22d5ec3d0ab56_603x147.png) 横向对比冲突 会对具体行显示会更清楚点 ![](https://img.kancloud.cn/b6/e5/b6e5b070d21c36041ae221f0368f9640_772x64.png) 这次只想保存自己忽略合并过来的代码经过修改后,只需要将这个文件手动提交即可,`git add .` 在` git commit -m '解决冲突'` ![](https://img.kancloud.cn/e5/0a/e50a612c5e7e428a1fc6b896ba1871cf_351x73.png) ***** **冲突我就是不会解决** 可以放弃本次合并 `git merge --abort`,Git 仓库就会回到`merge`前的状态