合并删除并添加错误的文件

时间:2012-07-17 12:20:06

标签: git merge branch branching-and-merging tortoisegit

在开始喷出git命令之前,我使用Windows 7-64bit和TortoiseGit(目前为v1.7.11.3),因为我是Git的新手。

我的DEV分支比当前远程主分支旧,我更新DEV,并解决冲突 DEV分支已将提交推送到远程DEV分支,因此rebase是不可能的 - 据我所知。

为什么会发生这种情况,我该如何避免呢?

  1. Checkout master(切换到本地主人)
  2. Pull origin master(无冲突)
  3. Checkout DEV(切换到dev分支)
  4. Merge master(将本地主更改应用到本地DEV分支)
  5. 修复冲突和commit已修改的文件(自动合并和修复的冲突文件)
  6. 当我打开log时,我会看到提交窗口中的“父1”文件和未显示的“父2”文件。这是奇怪的部分,(本地/远程相同)主人已删除的文件现在已添加,新文件已删除。<登记/> 此外,“父2”文件没有产生任何冲突,尽管有一些应该

    新/已删除的文件与我的预期相反。那是为什么?
    如果一个文件是master中的新文件并且我合并到DEV分支中,那么我希望它在合并后存在 我的猜测是DEV分支被认为是主分支,而不是分支(主分区)我合并到DEV。

    我没有选择使用Revert来重新创建已删除的文件(那些在master中实际上是新的文件)。

1 个答案:

答案 0 :(得分:2)

我看到你的合并方向不正确:

你应该这样做:

git checkout master
git pull origin master

这里有两种变体:

1)如果您不想在遥控器上重写开发分支历史记录,那么您必须保持原样但要做到

git merge dev # will produce merge commit if not fast-forward 

2)或者如果你不太关心dev分支历史

git checkout dev
git rebase master # now all commits that happened in dev will be "on top" of master, master will be behind
git checkout master
git merge dev # will result in fast-forward merge without merge commit

现在为了回到故障合并之前的状态你可以做(​​如果合并是你在dev分支中做的最后一件事):

git checkout dev
git reset --hard HEAD~1

现在您可以正确合并。在第二种情况下,除非你使用-f标志,否则大多数时候将dev分支推送到远程开发将被禁止为非快进。希望有所帮助。