合并分支,长时间未合并

时间:2018-05-05 05:03:17

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

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

情景:

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

  

这个分支提前12次提交,4次提交主人。

每当我pull master进入branch1时,我在许多文件中都存在冲突,这些文件应该在.gitignore文件中(例如*.unwantedFileExtensions)。我尽力解决冲突,但是当我尝试构建程序时,它会抛出异常/错误。

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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

gitignore"明确指定要忽略的未跟踪文件。"

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

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

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

现在我们与主人达成了最新动态,让我们让git忘记那些被忽略的文件。 Git会认为这些文件已被删除,但它们仍然可以在本地使用。然后,我们将不再提供跟踪这些文件。

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

现在,branch1与master保持同步,并在正确保留文件的同时正确忽略这些文件。