2016-12-20 36 views
0

我不知道發生了什麼,但我認爲另一位開發人員用他們的合併覆蓋了我的提交。我認爲visual studio git插件弄糟了一些東西。指向錯誤提交的文件

編輯
我覺得什麼事是其他開發商合併是沒有我的變化尚未分支的一個老過時的版本。所以現在他的舊承諾正在使用,而不是我的。

我有我犯a但之後他合併更新的文件,推動所有文件都指向另一個年長提交b

提交a仍然在歷史,但混帳我猜認爲,文件的頭在承諾b

是否有一個簡單的方法來解決這個問題,讓我所有的文件,我更新回我的承諾,但離開他的文件,他完整地更新?

編輯
ASCII圖形表示與我的想法正巧<表示註釋 - {文}。
請指正
https://gist.github.com/oneillc-advisory/cd039838448bf41e1e22f3a1ff5a4dfc

+0

你可以分享日誌圖的ASCII表示嗎? – choroba

+0

'不知何故另一個開發人員覆蓋了我的提交'。幸運的是,Git永遠不會失去歷史,至少不會那樣。 –

+0

@MadPhysicist被覆蓋是一個壞詞。他們讓git認爲他們不像以前那麼重要,我想這是一種更好的說法。 – ThrowsException

回答

0

所以我不知道這是否是最好的方式,但我結束了以下這個http://www.programblings.com/2008/06/07/the-illustrated-guide-to-recovering-lost-commits-with-git/

我執行從我想要的提交中得到一個重新分配。這讓我有大約60%的途徑。剩下的我只是做了一堆合併和手工編輯,讓事情回到我認爲應該是的地方。這樣做可能會更快更有效,但我認爲我有99%回到了我需要的地方。

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 
+0

我厭倦了這一點,但分支已經在其中包含所有我的更改,所以當我合併它告訴我,它已經是最新的提交。 – ThrowsException