Git 实用技巧(按场景汇总)回退历史、新建空白分支等

本文最后更新于 2024年4月16日 晚上

git version 2.39.2.windows

1. 回退到历史 commit

回退分支历史是一个敏感的操作,需要小心谨慎。最好在备份、团队协商和测试的基础上进行操作,以避免不必要的问题。

将本地和远程分支回退到历史 commit 的过程涉及使用 Git 的命令来修改分支历史。请注意,在执行这些操作之前,务必备份你的代码,以防发生意外情况。以下为一般步骤:

  1. 查找历史 commit 的哈希值:使用 git log 命令查看提交历史并找到目标 commit 的哈希值

  2. 创建备份分支(可选): 在执行任何回退操作之前,使用命令:git branch backup-branch 创建一个分支来备份当前的状态

  3. 本地分支回退: 使用以下命令将本地分支回退到历史 commit:

    1
    git reset --hard <commit-hash>

    替换 <commit-hash> 为你想要回退到的历史 commit 的哈希。

  4. (!谨慎操作)远程分支回退: 强制推送(force push)本地分支更新远程分支(要求回退):

    这将会覆盖远程分支的历史,可能会影响团队中其他人的工作,所以要小心使用。

    1
    git push origin <branch-name> --force

2. 修改远程仓库地址

修改远程仓库地址可能会影响团队协作,需要谨慎操作。

在实际开发工作中,可能会由于远程仓库迁移等原因导致我们需要修改远程仓库的地址,以下为具体步骤:

1
2
3
4
5
6
# 查看远程仓库地址
git remote -v
# 修改远程仓库地址
git remote set-url <remote-name> <new-url>
# 验证远程仓库地址
git remote -v

3. 新建空白分支

参考:Git - git-switch Documentation: https://git-scm.com/docs/git-switch/zh_HANS-CN

使用 --orphan 参数,创建一条不基于任何现有提交的空白分支。其初始提交(即 HEAD)不指向任何父提交,从而形成一个独立的、空的历史记录。

1
git switch --orphan <new_branch_name>

4. 从 Git 中停止追踪「被追踪的文件」

若误将 .idea, .vscode 中的本地配置文件添加到 git 中,会导致每次编译时,IDE 会提示 git 修改。为了减少/消除提示,需要将该文件取消追踪,但不能将其从本地删除,以取消对 workspace.xml 文件的追踪为例:

  1. 停止追踪文件

    1
    git rm --cached .idea/workspace.xml
  2. 更新 .gitignore 文件,添加 .idea/workspace.xml

  3. 提交更改

    1
    2
    git add .
    git commit -m "Update .gitignore"

5. 重命名分支

例如将 mian 分支重命名为 astrowind

1
2
3
4
# 切换到需要重命名的分支
git switch main
# 使用 git branch -m 命令来重命名分支
git branch -m astrowind

如果需要把改动推送到远程仓库,请执行以下命令

1
2
3
4
# 删除远程的 old_branch
git push origin --delete main
# 将新的分支推送到远程仓库(-u, --set-upstream 表示设置 astrowind 为当前分支的上游分支)
git push -u origin astrowind

6. Git 克隆特定分支

克隆仓库中的某个特定分支:

1
2
3
git clone -b <branch-name> <repository-url>
#例如,克隆 develop 分支,命令如下:
git clone -b develop https://github.com/username/repository.git

7. 从已克隆的主分支拉取其他分支

如果已经克隆了仓库的 main 分支,但希望拉取 develop 分支,可以按照以下步骤操作:

  1. 切换到仓库目录:

    1
    cd /path/to/your/repository
  2. 检查并清理工作目录:确保没有未提交的更改,如果有未提交的更改,提交或暂存它们。

    1
    git status
  3. 从远程仓库获取所有分支的最新信息:

    1
    git fetch origin
  4. 如果本地没有 develop 分支,创建并检出(checkout)本地的 develop 分支:

    1
    git switch -c develop origin/develop

    若本地已有 develop 分支并需要更新:

    1
    2
    git switch develop
    git pull origin develop


Git 实用技巧(按场景汇总)回退历史、新建空白分支等
https://blog.cc01cc.cn/2024/04/15/practical-skills-for-git/
作者
零一/cc01cc(zeo)
发布于
2024年4月15日
更新于
2024年4月16日
许可协议