Git 工作流操作指南

目录

如何解决与 master 的冲突

  • 首先,rebase 到最新的 master 分支

    # 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
      
  • 然后你可以继续 rebase,通过

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

    git push --force
    

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

有时我们希望合并多个提交,特别是当后面的提交只是对前面提交的修复时,为了创建一个包含一组有意义提交的 PR。你可以按照以下步骤操作。

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

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

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

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

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

    git push --force
    

强制推送的后果是什么

前两个技巧需要强制推送,这是因为我们改变了提交的路径。只要更改的提交只是你自己的,强制推送到你自己的 fork 是没问题的。