Git 工作流程 Howtos

目录

如何解决与 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
    

强制推送(force push)的后果是什么

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