Git 合并过程中的问题解决

80 阅读2分钟

git pull 合并远程仓库,不自动创建一个合并日志

  1. 单次合并 git pull --rebase 命令
  2. 设置 Git 配置
git config pull.rebase true  # 为当前仓库设置
git config --global pull.rebase true  # 全局设置

如果已经存在一次自动生成的合并日志,怎么去掉

  1. 使用 Git Reset:

命令示例:git reset --hard <commit_hash>

  • **工作目录重置 **未提交的修改将被丢弃
  • 暂存区重置: 之前添加到暂存区但尚未提交的修改也会被取消
  1. 使用 git revert, 会保留日志

    # 执行合并撤销
    git revert -m 1 HEAD
    
  2. 使用 Git Rebase -i(交互式变基):

  • 如果你想要整理你的提交历史,包括去除或修改一些错误的合并提交,可以使用交互式变基git rebase -i
  • 执行 git rebase -i HEAD~N(这里N是要回退的提交数量),然后在打开的编辑器中,找到不需要的合并提交,将其对应的命令从 pick 改为 drop 或者直接删除那一行。然后保存退出,Rebase将应用其他的提交。

怎么把远程仓库的提交给回退

方法1:使用 git reset (不推荐对公共分支使用)

如果你需要回退到特定的提交,并且不在乎在这之后的提交,你可以在本地执行git reset,然后强制推送到远程仓库。例如:

  1. 在本地回退:

    git reset --hard <commit-hash>
    

    这里 <commit-hash> 是你想要回退到的提交的哈希值。

  2. 强制推送到远程:

    git push origin <branch-name> --force
    

    或者,如果你使用的是main或master分支:

    git push origin main --force
    

注意: 强制推送(--force)会重写远程仓库的历史,这可能会对其他协作者产生混乱。确保提前通知团队成员,并确认没有更好的解决方案。

方法3:交互式变基 git rebase -i (高级)

如果你需要修改多个提交或者重新组织提交,你可以使用交互式变基。但是,这应该只在私有分支或者你确信没有其他人基于这些提交做工作的情况下使用。

  1. 交互式变基:

    git rebase -i <commit-hash>^
    

    这里 <commit-hash> 是你想要修改的提交的直接父提交。你会进入一个交互式界面,可以选择要修改的提交。

  2. 按照提示修改提交: 你可以选择删除某些提交,修改提交信息等。

  3. 强制推送变更:

    git push origin <branch-name> --force