我在我的本地機器上有一個檔案夾/檔案結構,因此:
project1/
----.git/
----src/
file1.cpp, ..., file10.cpp
----include/
incl1.h, ..., incl10.h
.gitignore
這被提交并推送到了在線存盤庫。從那時起,我在本地修改了/src/和/include/下的檔案。然而,我現在意識到,自從推送后在本地/src/下所作的修改是錯誤的。而在本地/include/下所做的修改則很好。我現在想在本地保留我對/include/下的檔案所做的好的修改,只在本地將/src/檔案夾恢復到之前的狀態--也就是說,我只希望本地的/src/檔案夾與最新推送到在線版本庫的檔案完全一樣。/include/ 檔案夾應該在本地保持不變。
也就是說,我不希望在本地完全復制在線版本庫的全部內容,而只是復制其中的特定檔案夾/檔案。
uj5u.com熱心網友回復:
你在本地提交了不需要的修改嗎?
如果沒有,你可以采取一些方法。
一種是使用帶路徑名的 git checkout,例如,git checkout src/ 將重置 src 目錄中的檔案,使其回到當前頭部提交時的狀態。
另一種方法是有選擇地添加和提交你想保留的檔案/目錄。然后一旦作業樹和提交狀態之間只剩下你不想保留的改動,你就可以用git reset --hard將它們剔除。
如果你在本地提交了修改,那么你又有多種選擇。這取決于你想保留本地歷史的哪些方面。
一種選擇是使用git reset --mixed origin/master(用遠程和遠程分支的名稱替換 origin/master)。這將撤銷本地添加/提交的更改,但將本地更改留在作業樹中,在那里它們可以被處理,就像你從未提交過它們一樣。
另一種方法是使用git checkout origin/master src/,然后做一個新的提交,這將產生一個包括添加和恢復的歷史記錄
還有其他的選擇,比如過濾分支或互動式重定位,讓你在改變內容的同時保留本地提交的結構,但我對這些還不夠熟悉,不能寫詳細的說明。 熟悉,無法寫出詳細的說明,
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/308291.html
標籤:
