我刚刚开始使用Git和之前使用的CVS进行版本控制。
有人可以解释我如何处理Git中的合并冲突案件吗?在这种情况下,遵循的标准程序是什么。
我在完成以下步骤后面临一种情况,
git add
和git commit
git pull
从远程仓库获取最新信息到我的本地仓库。拉失败并说有合并冲突。让我们假设我从遥控器拉到我的本地仓库,然后执行第1步(提交文件)。如果其他人在我推送到远程仓库之前推送他们的更改会发生什么。我相信以合并结束的推动是一种常见的情况。如何处理这些案件?
我认为pull涉及fetch + merge。在我的情况下,自动合并似乎失败了。在上述情况下我该怎么办?还请告诉我如何避免陷入这种情况?
答案 0 :(得分:3)
当你有冲突的文件时,git会在每个冲突的文件中插入冲突标记。冲突标记包含来自两个分支的代码,如下所示:
<<<<<<<<< LOCAL_BRANCH_NAME
local code goes here
==========
merge branch code goes here
>>>>>>> MERGE_SHA
当您执行git状态时,您会看到这些文件的状态为“已修改”,这些文件存在冲突。从技术上讲,解决这些问题需要做的就是git add file
,但很明显,如果那是所有,那么你的代码就会搞砸了。
解决冲突的最简单方法是使用git mergetool
。当文件冲突时运行git mergetool
并且git将询问您要使用哪个合并工具,它支持一个长列表我的首选工具是kdiff3。 git
然后会引导您浏览每个冲突的文件,如果您的工具支持它,则使用3方式差异(强烈建议,它会使事情变得更容易)。
作为评论中未收集的建议,在您开始时阅读git book是必须的。
答案 1 :(得分:1)
以下是我如何进行git提交的快速列表:
git clone <repository url>
git stash
:这会将您未提交的更改存储在临时缓存中(并暂时将其从工作目录中删除,因此您可以获得干净的副本)git pull
获取最新的存储库版本git stash pop
将隐藏的更改应用于本地存储库(并将其从存储中删除);这可能会产生冲突,就像合并或变种一样git add <changed files>
git commit
,使用-m
提供短信或将其留空以打开编辑git push
将您的更改发布到远程他们可以避免你遇到的问题是在拉动之前隐藏你的更改,然后在拉完后弹出存储。