[关闭]
@wangwangheng 2015-04-01T16:12:12.000000Z 字数 1093 阅读 5704

在Git master分支上提交代码的步骤

开发工具


在提交代码的过程中,遇到修改冲突,而导致无法将修改push到远端的git代码库,下面是一个常见的case(在master完成代码修改,提交,合并和推送 <-- 虽然这是极不推荐,正确的方式是在branch上完成),我给出一个推荐的解决方案,供大家参考。

  1. 本地代码已通过编译和初步测试,可以提交了,执行 git add .;如果有文件删除,则使用git add -A,注意该命令慎用,其有可能将不该提交的代码也放到待提交区域。
    养成好的习惯,提交前再次执行git status确认待提交的文件无误,git commit -m "blabla...."

  2. (可选)准备push本地commit到远端git仓库,先执行git fetch,看看远端是否有已有提交,如有,而你又没有提交本地修改,则回到第一步,防止因为对git不熟悉而造成代码丢失;如没有,则尽快push,执行git push origin master

  3. 如果不幸在你push代码之前,又有其他同事已经push了代码,则执行git pull --rebase,后面的--rebase不要忘记,否则会出现merge commit,不便于日后比较commit的变化。

  4. git status,提示本地修改领先于远端,则证明运行上述git pull --rebase后,git已经替你处理了本地差异,直接git push origin master即可。否则,git status 提示 rebase in progress,说明当前有冲突,需要把标记为红色的文件内的冲突处理完成,后执行git add . ,(不要执行git commit 操作) 再执行git rebase --continue。如果git status不再提示rebase in progress则说明冲突已经解决,可以执行git push origin master,否则,重复执行”需要把标记为红色的文件内的冲突处理完成,后执行git add . ; 再执行git rebase --continue“后,执行git push origin master。
    再次强调:rebase过程中不要执行git commit 操作,git rebase --continue会在你解决冲突并git add后,自动完成commit。

  5. 如果你执行了git commit,则可以使用git reset --soft HEAD^ 取消之前的最后一个commit,然后执行git rebase --abort。从第二步再执行一遍。

其实大家仔细阅读执行每个git命令后的提示,则可以看到,git已经提供给你几种解决冲突的方案,根据当前情况,选择一种执行即可,无需死记硬背上述步骤。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注