Git 工作流指南

目录

如何解决与主分支的冲突

  • 首先变基到最新的主分支

    # The first two steps can be skipped after you do it once.
    git remote add upstream https://github.com/dmlc/xgboost
    git fetch upstream
    git rebase upstream/master
    
  • git 可能会显示一些它无法合并的冲突,例如 conflicted.py

    • 手动修改文件以解决冲突。

    • 解决冲突后,通过以下方式将其标记为已解决:

      git add conflicted.py
      
  • 然后你可以继续进行变基操作通过

    git rebase --continue
    
  • 最后推送到你的分支,你可能需要在这里强制推送。

    git push --force
    

如何将多个提交合并为一个

有时我们希望合并多个提交,特别是当后续提交仅是对之前提交的修正时,以创建一个包含一组有意义提交的PR。您可以通过以下步骤完成。

  • 在此之前,如果你之前没有配置过,请配置git的默认编辑器。

    git config core.editor the-editor-you-like
    
  • 假设我们想要合并最后3次提交,输入以下命令

    git rebase -i HEAD~3
    
  • 它将弹出一个文本编辑器。将第一个提交设置为 pick,并将后续的提交更改为 squash

  • 保存文件后,将会弹出另一个文本编辑器,要求您修改合并的提交消息。

  • 将更改推送到你的分支,你需要强制推送。

    git push --force
    

强制推送的后果是什么

前两个技巧需要强制推送,这是因为我们改变了提交的路径。只要更改的提交仅属于你自己,强制推送到你自己的分支是可以的。