場(chǎng)景1
如果系統(tǒng)中有一些配置文件在服務(wù)器上做了配置修改,然后后續(xù)開(kāi)發(fā)又新添加一些配置項(xiàng)的時(shí)候, 在發(fā)布這個(gè)配置文件的時(shí)候,會(huì)發(fā)生代碼沖突:
error: Your local changes to the following files would be overwritten by merge: protected/config/main.phpPlease, commit your changes or stash them before you can merge.
- 如果希望保留生產(chǎn)服務(wù)器上所做的改動(dòng),僅僅并入新配置項(xiàng), 處理方法如下:
$ git stash
$ git pull
$ git stash pop
然后可以使用git diff -w +文件名 來(lái)確認(rèn)代碼自動(dòng)合并的情況.
- 反過(guò)來(lái),如果希望用代碼庫(kù)中的文件完全覆蓋本地工作版本. 方法如下:
$ git reset --hard
$ git pull
其中g(shù)it reset是針對(duì)版本,如果想針對(duì)文件回退本地修改,使用
$ git checkout HEAD file/to/restore
場(chǎng)景2
在 checkout 或者 rebase 時(shí), 如果提示:
Please move or remove them before you can switch branches.Aborting
執(zhí)行:
$ git clean -d -fx
場(chǎng)景3
有時(shí) push 代碼的時(shí)候, 出現(xiàn)提示:
$ git push
To ../remote/
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to '../remote/'
原因在于: git remote 倉(cāng)庫(kù)中已經(jīng)有一部分代碼, 所以它不允許你直接把你的代碼覆蓋上去. 于是你有 2 個(gè)選擇方式:
- 強(qiáng)推, 即利用強(qiáng)覆蓋方式用你本地的代碼替代 git 倉(cāng)庫(kù)內(nèi)的內(nèi)容
$ git checkout origin/**branchName**
$ git log -3
$ git push -f
- 或者先把 git 的東西 fetch 到你本地然后 merge 后再 push
$ git fetch
$ git merge