Git提交代码一般流程
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