2017-09-06 17 views
0

我對代碼做了一些更改,然後做了一個: git add。 git commit git push origin master。如何獲取代碼到先前在GIT中提交的已被推送到服務器的代碼

現在我意識到我犯了一些錯誤,我想回到先前提交的代碼,然後重新執行更改並將它們推回服務器。

這是git的日誌輸出:

commit 3254c7668610a86eb930798c3c50fb5e1c298cbf 
Author: Subhayan Bhattacharya <[email protected]> 
Date: Wed Sep 6 00:53:39 2017 -0700 

    Made changed to downloadpkgapp.sh 

commit c6577344eaa7ed1ac7fc911892cf85f66a0ac0b9 
Author: Subhayan Bhattacharya <[email protected]> 
Date: Wed Aug 16 02:56:17 2017 -0700 

    commiting changes to file CallProgram.py 

commit 3839fa51edb20812c10d96f40b36aaa4fada9200 
Author: dheeraj.mittal <[email protected]> 
Date: Sun Jun 11 11:17:41 2017 +0200 

    added execute permission command for application package 

有人請幫助我一樣。我很難理解GIT。所以如果有人也可以解釋任何建議的步驟都很棒。

回答

-1

我建議你使用一個像Git Extensions這樣的git圖形界面。這將是更容易遵循發生了什麼......

Git的擴展,你可以這樣做:

1)確保你沒有未COMMITED任何變化。在提交中包含任何更改以確保您不會丟失它

2)在上次提交時創建一個新分支:單擊上次提交,按右鍵並選擇「創建新分支」。在對話框中不要選擇「在創建後檢查選項」。呼叫新分支,如「不正確」

3)選擇您的最後一個正確的提交,然後按右鍵並選擇「重置當前分支到這裏」。選擇「硬」重置類型。

4)重做所有你需要提交的代碼修改

5)按​​「推」按鈕,並在推對話框中選擇「選項」,選中「強制使用租賃」這將迫使的更新服務器到您的新提交。

要小心!:如果任何人已將您的更改與您以前的提交一起提交,那麼如果更改服務器中的提交歷史記錄,則會造成很多混淆。如果有人有任何可能的情況發生,你應該保留你的提交歷史記錄,並在新的提交中進行更正。

當你確定你不需要它時,你可以刪除「不正確」的分支。

+0

@downvoter:你能說明任何原因嗎? – DaniCE

0

如果您在分支master上有3個提交(例如A,B和C),請將它們推送到遠程(例如origin),然後確定您對C犯了錯誤並想要恢復它,你應該首先確保沒有其他人拉動分支。如果他們有,你的承諾與他們在一起。

如果沒有,你可以先把你master分支重置爲B像這樣,

git reset --hard B 

然後力推master再次使用

git push --force origin master 

但是,這改變了項目的歷史記錄,以便只有在瞭解後果的情況下才能做到這一點。

0

當您推送到遠程存儲庫時要小心,因爲其他人可能已經提交了錯誤的提交。

我認爲你應該考慮把它留在那裏,並做一些恢復操作。

首先,如果您的提交是正常的,您可以使用git revert <last-commit>來簡單地恢復您的更改並推送到存儲庫。

其次,如果你的提交是合併提交,你應該小心。在這裏你應該使用git revert <last-commit> -m 2來恢復你的狀態到源分支。 你可以學習Undoing Mergesgit revert --help以瞭解它。

+0

您沒有回答這個問題:如何更新服務器中的提交歷史記錄。在很多情況下,這樣做是合理的:最明顯的是當你是「私人」項目的唯一開發者時(你認識幸運的盧克......我是一個可憐的寂寞程序員...... ) – DaniCE

+0

@DaniCE歷史只是歷史,你不能改變發生的事情。我認爲糾正的最好方法就是使用另一個恢復提交來抵消錯誤的提交。如果您剛剛重置爲以前的提交和推 - 力,其他人在您推送後不會拉取任何內容。但是他們的本地提交歷史有你錯誤的提交,所以當他們推動,然後錯誤的提交會再次回來!我認爲'push-force'是獨立開發者,'revert'是爲了合作。 – networm

+0

@networn你是對的,*在生活中*你不能改變發生的事情。如果這是生活中的推動力,我會經常使用它:)也談論歷史,它好奇每一代如何重寫它! – DaniCE

相關問題