文件指向错误的提交

时间:2016-12-20 16:36:46

标签: git

我不知道发生了什么,但我认为另外一个开发人员用他们的合并覆盖了我的提交。我觉得visual studio git插件搞砸了。

修改
我认为发生的事情是另一个开发人员合并了一个旧的过时版本的分支,但尚未进行我的更改。所以现在他的旧承诺被用来代替我的。

我有使用提交a更新的文件,但在他合并并推送之后,所有文件都指向另一个较旧的提交b

提交a仍然在历史记录中,但我认为git认为该文件的头部位于提交b

是否有一种简单的方法可以解决此问题,以便将我更新的所有文件更新回我的提交,但保留他更新的文件完整无缺?

修改
带有我认为发生的注释的Ascii图表由< - {message}表示 请纠正我 https://gist.github.com/oneillc-advisory/cd039838448bf41e1e22f3a1ff5a4dfc

2 个答案:

答案 0 :(得分:3)

如果你在本地仍然有正确的提交,你可以创建一个新的分支,这样你的提交就会保持安全,然后检查原始分支,拉动以便你获得其他开发人员的更改,然后将你创建的新分支合并到那,解决你可能遇到的任何冲突:

git checkout -b fix-commit //creates a new branch with your commit on it
git checkout master //assuming the problem is on master
git pull
git merge fix-commit
git push

答案 1 :(得分:0)

所以我不知道这是不是最好的方式,但最后我跟着这个http://www.programblings.com/2008/06/07/the-illustrated-guide-to-recovering-lost-commits-with-git/

我从我想要的提交中执行了一个rebase。这让我大约有60%的路在那里。其余的我最后做了一堆合并和手工编辑,让事情回到我认为应该是的地方。可能有一种更快,更有效的方法来做到这一点,但我想我99%回到了我需要的位置。