2017-04-04 60 views
0

操作系統:ubuntu 16Git如何更新本地存儲庫並保留我的更改

我使用git clone來複制遠程存儲庫到我的本地機器。 我做了一些改變(通過納米)在一些代碼可以說5-10個文件(存儲庫有2000多個文件,我認爲)。

但現在這個存儲庫得到了一些不錯的更新。我想獲得所有這些更新,但我想保留我的自定義更改。我不能承諾這個存儲庫,因爲我相信我的代碼和修復是「壞」,並不完美。

我應該使用哪個命令來獲取所有更新並將更改保留在文件中?

回答

1

最簡單的方式(如果你正在使用的分支上要更新):

git stash 
git pull 
git stash pop 

另一種選擇是創建另一個分支,以保持您的更改:

git checkout -b my-new-branch 
git add . 
git commit -m "my changes" 
git pull --rebase origin master # this will get the updates and place your changes on top of it 

在展臺方法你可能會發生衝突,解決它們你可以使用:

git mergetool 
+0

謝謝,我做了「git stash git pull git stash pop」看起來像它可以完美地在小的版本庫上進行「小」更改。 – Amaroc

3

一種選擇是藏匿您的工作目錄(以及可能的階段),拉的更改,然後再應用已藏匿:

git stash 
git pull origin master # or whatever the branch name is 
git stash apply 

這應該離開你大概你在之前的狀態拉動新的變化。我說「粗略」,因爲應用隱藏可能會導致合併衝突。如果您所做的更改與上次同步後對回購所做的更改發生衝突,則此類衝突可能無法避免。

如果您擔心失去您的工作,那麼我會建議在您的更改中創建一個支行。爲此,您可以嘗試:

git stash 
git checkout -b safe_branch 
git stash apply 
git commit -m 'my work' 

然後,您可以嘗試合併或重新綁定原始遠程分支上的此分支。假設你想合併,你可以嘗試:

git fetch origin 
git checkout safe_branch 
git merge master  # or whatever the remote branch is called 

現在你有一個真正的提交包含你的工作分支。在這個更安全的設置中失去你的工作真的很難。

+0

謝謝,我想試試看,我可以使cp -R localrepo localrepotest並在那裏做這個指令? – Amaroc

+0

當創建一個像這樣的新分支時,不需要使用'git stash',這些更改會自動轉移到新分支。 – 1615903

+0

@ 1615903習慣的力量,我似乎回想起早期版本的Git不允許這樣做。是的,你是對的。 –

相關問題