Skip to main content

Git 常见问题解决

Auth: LIU Yilin

1. 分叉问题

问题描述:

在 Git 中,分叉(fork)是指两个或多个开发者独立进行的开发,导致项目的提交历史沿着不同的路径发展。这通常发生在团队协作中,多个开发者并行地在各自的分支上进行开发。在一段时间后,这些分支可能需要合并到主分支。如果在此过程中出现冲突,Git 需要一种方法来解决这些冲突。

解决方法:

git rebase 是解决分叉问题的一种方法。它的工作原理是将一个分支上的更改重新应用到另一个分支,从而使两个分支具有相同的基础。这样做的好处是可以保持项目的提交历史更简洁和线性。

以下是如何使用 git rebase 来修复分叉的步骤:

  1. 确保您处于要重新基于的分支(通常是主分支)。例如,如果您想将您的开发分支 my-feature 重新基于 main 分支,请切换到 main 分支:

    git checkout main
  2. 确保您的 main 分支是最新的,与远程仓库同步:

    git pull
  3. 切换回您的开发分支(my-feature):

    git checkout my-feature
  4. 使用 git rebase 命令将您的开发分支重新基于 main 分支:

    git rebase main

在此过程中,如果遇到任何冲突,Git 会暂停 rebase 操作,让您解决冲突。一旦冲突解决,您可以继续 rebase 过程:

  1. 解决冲突,然后将修改后的文件添加到暂存区:

    git add <file-with-resolved-conflicts>
  2. 继续 rebase 过程:

    git rebase --continue
  3. 如果遇到更多冲突,请重复步骤 5 和 6,直到完成 rebase

  4. 最后,将修改后的分支推送到远程仓库:

    git push -f

注意:在执行 git push -f 时要谨慎,因为这将强制覆盖远程仓库中的分支。确保您了解这一操作的后果,以免丢失其他人的工作。

通过这个过程,您已经将您的 my-feature 分支重新基于了 main 分支,解决了分叉问题。这样一来,提交历史将保持整洁和线性,便于理解和维护。

2. 偶然在 main 分支 commit 问题

问题描述:

在日常开发中,有可能会忘记切换至自定的分支,在 main 分支提交代码至本地仓库,但还未push或受到分支保护暂未至远程,需要进行修复。如图所示,本地的 Git 的 main 分支已经前进了一个版本

2.1

解决方法:

  1. 点击左侧main分支,进入主分支,右键点击Revert Commit

    2.1.1

  2. 记得要勾选Hard

    2.2.1

  3. 恢复原样,记得要回到自己设立的分支开发,如图中dev

    2.3.1