Git的代碼管理區有工作區、暫存區、本地倉庫和遠端倉庫;常用的代碼處理過程有git add、git commit、git push 和 git pull、 git reset、git checkout等。
提交代碼流程
情景一:基於遠端庫最新版本,在工作區修改了代碼,並將此修改入庫
-
- git add . 將代碼提交至暫存區
- git commit -m "對修改功能的說明" 將代碼從暫存區提交至本地倉庫
- git push origin branch branch是不用評審分支
- git push origin HEAD:refs/for/branch branch是需要評審的分支 將代碼從本地倉庫推至遠端倉庫
情景二:工作區修改了代碼,但遠端庫的版本被更新過
放棄工作區修改
-
- git checkout . 將工作區的所有文件的內容恢復到暫存區的狀態
- git checkout files 將工作區的指定文件的內容恢復到暫存區的狀態
然后,用git pull 更新代碼即可
不放棄工作區修改
需要將本地倉庫的代碼更新,才可提交修改。而git pull更新本地倉庫和工作區的代碼時,會存在代碼沖突的情況。
解決工作區修改與遠端庫有沖突方法有
第一種(我常用)
-
- git stash 工作區修改的代碼放入暫存區
- git pull 將遠端庫的代碼更新至本地
- git stash pop 將暫存區修改的代碼與現有最新代碼merge,可能存在沖突,需要解決沖突文件
- git add files(解決沖突后的文件)
- git commit -m "說明"
- git push
第二種
-
- git fetch 命令詳情
- git merge 若無沖突,直接merge成功,若有沖突,會顯示沖突文件
- git add .
- git commit -m "說明" 將工作區修改代碼提交至本地倉庫,這樣可以用mergetool與fetch的新代碼比較
- git mergetool 比較沖突的文件,左側窗口是工作區修改的代碼,中間是本地倉庫代碼;右側是遠端倉庫的修改代碼,將需要的功能,同步至中間窗口保存即可
以diffmerge工具作為比較工具為例 git config --global merge.tool diffmerge git config --global mergetool.diffmerge.path /usr/bin/diffmerge PS: 在使用git mergetool命令時,可能無法及時彈出比較文檔的對話框,可嘗試多輸幾次命令; 百度經驗也有設置一些變量,如 git config --global mergetool.diffmerge.trustexitcode true git config --global core.trustctime false git rebase --skip
- git commit -m " "將解決沖突后的文件提交,結束合並流程
- git push
常用git命令的詳解
- git reset
https://www.cnblogs.com/qyxl/p/12228974.html
- git checkout
https://www.cnblogs.com/qyxl/p/12229048.html
- git push