我如何在我的 Git 存储库中解决合并冲突?


当前回答

查看如何呈现冲突或,在 Git 中, git 合并文档了解合并冲突标记是什么。

此外,如何解决冲突部分解释如何解决冲突:

看到冲突后,你可以做两件事: 决定不合并. 唯一的清洁你需要是重新设置指数文件到头条承诺逆转 2. 和清理工作树的变化由 2 和 3; git merge --abort 可以用于此。

您还可以阅读关于合并冲突标记,以及如何在Pro Git书部分中解决它们的基本合并冲突。

其他回答

GitLens for Visual Studio 代码

您可以尝试 GitLens for Visual Studio Code. 关键功能是:

3、轻松解决冲突

我喜欢这个特征:

此分類上一篇

第2章 现在的罪恶

此分類上一篇

第3章 错了

此分類上一篇

4、状态酒吧罪恶

此分類上一篇

有很多功能,你可以在这里查看。

识别哪些文件处于冲突中(Git应该告诉你这一点)。 打开每个文件并检查Difs; Git demarcates它们. 希望它将是显而易见的哪个版本的每个区块保持。 你可能需要讨论它与同开发人员谁承诺的代码. 一旦你解决了冲突在一个文件 git 添加到_file. 一旦你解决了所有冲突,做 git rebase --continue 或 whateve

查看如何呈现冲突或,在 Git 中, git 合并文档了解合并冲突标记是什么。

此外,如何解决冲突部分解释如何解决冲突:

看到冲突后,你可以做两件事: 决定不合并. 唯一的清洁你需要是重新设置指数文件到头条承诺逆转 2. 和清理工作树的变化由 2 和 3; git merge --abort 可以用于此。

您还可以阅读关于合并冲突标记,以及如何在Pro Git书部分中解决它们的基本合并冲突。

下面是可能的使用案例,从顶部:

你会拖一些变化,但哦,你没有到目前为止:

git fetch origin
git pull origin master

From ssh://gitosis@example.com:22/projectname
 * branch            master     -> FETCH_HEAD
Updating a030c3a..ee25213
error: Entry 'filename.c' not uptodate. Cannot merge.

所以你更新并尝试一次,但有冲突:

git add filename.c
git commit -m "made some wild and crazy changes"
git pull origin master

From ssh://gitosis@example.com:22/projectname
 * branch            master     -> FETCH_HEAD
Auto-merging filename.c
CONFLICT (content): Merge conflict in filename.c
Automatic merge failed; fix conflicts and then commit the result.

所以你决定看看这些变化:

git mergetool

哦,我的,哦,我的,上流改变了一些事情,但只是用我的变化......不......他们的变化......

git checkout --ours filename.c
git checkout --theirs filename.c
git add filename.c
git commit -m "using theirs"

然后,我们试着最后一次。

git pull origin master

From ssh://gitosis@example.com:22/projectname
 * branch            master     -> FETCH_HEAD
Already up-to-date.

是的!

简单地说,如果你知道其中一个存储库的变化并不重要,并且想解决所有变化,有利于另一个,请使用:

git checkout . --ours

以您的存储库的利益来解决更改,或者

git checkout . --theirs

以解决其他或主要存储库的利益的变更。

或者你将不得不使用一个 GUI 合并工具,一步一步通过文件,说合并工具是 p4merge,或者写下你已经安装的任何一个的名字。

git mergetool -t p4merge

完成文件后,您将不得不保存和关闭,以便下一个将打开。