Git更新本地倉庫及衝突”Commit your changes or stash them before you can merge”解決

Git中從遠程的分支獲取最新的版本到本地有這樣2個命令:

1. git fetch:相當於是從遠程獲取最新版本到本地,不會自動merge

git fetch origin master
git log p master..origin/master
git merge origin/master

以上命令的含義:

   首先從遠程的origin的master主分支下載最新的版本到origin/master分支上
   然後比較本地的master分支和origin/master分支的差別
   最後進行合併

2. git pull:相當於是從遠程獲取最新版本並merge到本地

git pull origin master


上述命令其實相當於git fetch 和 git merge
在實際使用中,git fetch更安全一些
因為在merge前,我們可以查看更新情況,然後再決定是否合併

 

當遇到”Commit your changes or stash them before you can merge”衝突時,這表明GIt保護您本地的程式碼修改,避免重要的修改丟失。有三種方法解決:

1. 提交程式碼修改:

git commit -m “My message”

2. Stash it:

Stash存儲充當堆棧,您可以在其中推送更改,並以相反的順序彈出它們

存儲:

git stash

進行合併,然後拉出存儲的修改:

git stash pop

3. 丟棄本地的修改:

git reset –hard

或者

git checkout -t -f remote/branch

或者為特定文件丟棄本地修改:

git checkout filename

Tags: