【问题标题】:Merge branches, unmerged since long time合并分支,长期未合并
【发布时间】:2018-10-15 14:07:32
【问题描述】:

由于我自己的疏忽,我正面临这个问题。

场景:

我有两个分支masterbranch1。从一开始他们就没有任何.gitignore 文件(这是我的大错)。现在branch1的状态是

这个分支提前 12 次提交,在 master 后面 4 次提交。

每当我将pull master 转换为branch1 时,我都会在许多应该在.gitignore 文件中的文件中发生冲突(比如*.unwantedFileExtensions)。我尽力解决冲突,但是当我尝试构建程序时,它会引发异常/错误。

之后,我将.gitignore 文件显式添加到两个分支中以忽略所有*.unwantedFileExtensions 文件,但在合并时我仍然面临相同的冲突文件。

我几乎被困在这里。有谁知道如何解决这个问题?

【问题讨论】:

  • 让我知道为什么我的问题被否决了?
  • 您还必须删除这些文件。它们已经被 git 跟踪,所以仅仅将它们放入 .gitignore 是不够的。将它们放在那里,删除它们,提交两个分支,然后合并。

标签: git merge git-merge gitignore merge-conflict-resolution


【解决方案1】:

检查每个分支,在.gitignore 中添加要忽略的文件,同时删除这些文件。然后在每个分支中暂存并提交.gitignore 和删除的文件。

之后,您可以合并两个分支,不需要的文件应该不再冲突。

因此:

git checkout master
rm -rf *.unwantedFileExtensions
echo "*.unwantedFileExtensions" >> .gitignore
git add .gitignore *.unwantedFileExtensions
git commit -m "removed unwantedFileExtensions"

git checkout branch1
# repeat the steps above from branch master for this branch
git merge master

【讨论】:

    【解决方案2】:

    gitignore "有意指定要忽略的未跟踪文件。"

    您的文件已被跟踪; gitignore 不能追溯工作。它只忽略 new 文件。


    首先拉入冲突,根据需要合并它们,然后提交合并。

    • git pull
    • 根据冲突修复您喜欢的文件(在您选择的文本编辑器中打开)
    • 添加并提交合并文件git commit -a

    现在我们已经掌握了 master 的最新信息,让我们让 git 忘记那些被忽略的文件。 Git 会认为这些文件已被删除,但它们仍可在本地使用。然后我们将提交这些不再被跟踪的文件。

    • 提交/存储对未忽略文件的任何更改
    • 清除索引/暂存区(完全)git rm -r --cached .
    • 添加所有内容(.gitignore 中的文件将被忽略!)git add .
    • 现在需要从 git 的索引中删除这些文件(但不是从我们的工作目录中)git commit -m "Fix untracked files"

    现在 branch1 已与 master 保持同步,并正确忽略文件,同时仍将它们保留在本地。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-23
      • 1970-01-01
      • 2022-11-16
      • 2018-08-06
      • 2022-01-09
      • 1970-01-01
      相关资源
      最近更新 更多