情況一
git pull遇到錯(cuò)誤:error: Your local changes to the following files would be overwritten by merge
由于你跟別人改了同一份文件,所以pull代碼的時(shí)候會(huì)這樣。
解決方法1:可以保留本地改動(dòng)
git stash //保存當(dāng)前工作進(jìn)度,會(huì)把暫存區(qū)和工作區(qū)的改動(dòng)保存起來(lái)
git pull origin master
git stash pop
如此一來(lái),服務(wù)器上的代碼更新到了本地,而且你本地修改的代碼也沒(méi)有被覆蓋,之后使用add,commit,push 命令即可更新本地代碼到服務(wù)器了。
拓展
git stash save 'message...'可以添加一些注釋
git stash list 顯示保存進(jìn)度的列表。也就意味著,git stash命令可以多次執(zhí)行。
git stash clear刪除所有存儲(chǔ)的進(jìn)度。
git stash pop [–index] [stash_id]
git stash pop 恢復(fù)最新的進(jìn)度到工作區(qū)。git默認(rèn)會(huì)把工作區(qū)和暫存區(qū)的改動(dòng)都恢復(fù)到工作區(qū)。
git stash pop --index 恢復(fù)最新的進(jìn)度到工作區(qū)和暫存區(qū)。(嘗試將原來(lái)暫存區(qū)的改動(dòng)還恢復(fù)到暫存區(qū))
git stash pop stash@{1}恢復(fù)指定的進(jìn)度到工作區(qū)。stash_id是通過(guò)git stash list命令得到的
通過(guò)git stash pop命令恢復(fù)進(jìn)度后,會(huì)刪除當(dāng)前進(jìn)度。
解決方法2:不保留本地改動(dòng)
git reset --hard
git pull origin master
參考:
https://blog.csdn.net/misakaqunianxiatian/article/details/51103734
https://blog.csdn.net/anhenzhufeng/article/details/78052418
https://blog.csdn.net/daguanjia11/article/details/73810577
情況二
本地branch1已改動(dòng),但是不想提交,想要從master上重新建分支branch2
在branch1上保存已改的東西:git stash
切換到master上:git checkout master
在master分支上新建branch2:git checkout -b branch2
這樣branch2上的內(nèi)容就跟master上一樣了。
參考