文章

Github进行fork后如何与原仓库同步

Fork同步

  • 检查本地仓库状态
1
git status
  • 拉取远端源仓库更新
1
git fetch upstream
  • 切换到 master 分支
1
git checkout master
  • 合并远程的master分支
1
git merge upstream/master
  • 推送修改至 Fork仓库
1
git push

子模块恢复

  • 使用 git log 命令查找删除子模块之前的提交哈希值

  • 使用 git checkout 命令恢复 .gitmodules 文件和子模块路径。将 <commit-hash> 替换为步骤 3 中找到的哈希值,将 <path> 替换为子模块的路径。

    • 1
      
      git checkout <commit-hash> -- .gitmodules <path>
      
  • 使用 git status 命令查看仓库状态。应该会看到 .gitmodules 文件和子模块路径的更改。

  • 使用 git add 命令将 .gitmodules 文件和子模块路径添加到暂存区。

    • 1
      
      git add .gitmodules <path>
      
  • 使用 git commit 命令提交更改

    • 1
      
      git commit -m "Restore submodule"
      
  • 使用 git submodule update --init --recursive 命令初始化并更新子模块

    • 1
      
      git submodule update --init --recursive
      
  • 使用 git push 命令将更改推送到远程仓库


提交记录合并

假设要合并最近的三个提交。

1
git rebase -i HEAD~3

这将打开一个交互式 rebase 窗口,列出了最近的三个提交

  1. 编辑提交历史: 在弹出的编辑器中,你会看到一个包含你最近提交的列表。每个提交前面都有一个单词 pick。将除第一个以外的所有 pick 更改为 squashs。这样就将它们合并到第一个提交中。确保第一个提交的行保持 pick,这将成为合并后的提交。
  2. 保存并关闭编辑器: 保存并关闭编辑器。Git 将自动继续执行 rebase 操作。
  3. 编辑新的提交信息: Git 将打开另一个编辑器窗口,让你编辑合并后的提交信息。编辑信息以描述这些提交的整体内容。
  4. 完成 rebase 操作: 保存并关闭编辑器。Git 将应用 rebase,并将你的提交历史整理成一条新的提交。
  5. 推送到远程仓库(可选): 如果这些提交是你已经推送到远程仓库的,你可能需要使用 git push --force 强制推送来更新远程分支。
本文由作者按照 CC BY 4.0 进行授权