git version 2.39.2.windows
# 1. 回退到历史 commit
回退分支历史是一个敏感的操作,需要小心谨慎。最好在备份、团队协商和测试的基础上进行操作,以避免不必要的问题。
将本地和远程分支回退到历史 commit 的过程涉及使用 Git 的命令来修改分支历史。请注意,在执行这些操作之前,务必备份你的代码,以防发生意外情况。以下为一般步骤:
-
查找历史 commit 的哈希值:使用
git log命令查看提交历史并找到目标 commit 的哈希值 -
创建备份分支(可选): 在执行任何回退操作之前,使用命令:
git branch backup-branch创建一个分支来备份当前的状态 -
本地分支回退: 使用以下命令将本地分支回退到历史 commit:
git reset --hard <commit-hash>替换
<commit-hash>为你想要回退到的历史 commit 的哈希。 -
(!谨慎操作)远程分支回退: 强制推送(force push)本地分支更新远程分支(要求回退):
这将会覆盖远程分支的历史,可能会影响团队中其他人的工作,所以要小心使用。
git push origin <branch-name> --force
# 2. 修改远程仓库地址
修改远程仓库地址可能会影响团队协作,需要谨慎操作。
在实际开发工作中,可能会由于远程仓库迁移等原因导致我们需要修改远程仓库的地址,以下为具体步骤:
# 查看远程仓库地址
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)不指向任何父提交,从而形成一个独立的、空的历史记录。
git switch --orphan <new_branch_name>
# 4. 从 Git 中停止追踪「被追踪的文件」
若误将 .idea, .vscode 中的本地配置文件添加到 git 中,会导致每次编译时,IDE 会提示 git 修改。为了减少/消除提示,需要将该文件取消追踪,但不能将其从本地删除,以取消对 workspace.xml 文件的追踪为例:
-
停止追踪文件
git rm --cached .idea/workspace.xml -
更新
.gitignore文件,添加.idea/workspace.xml -
提交更改
git add . git commit -m "Update .gitignore"
# 5. 重命名分支
例如将 mian 分支重命名为 astrowind
# 切换到需要重命名的分支
git switch main
# 使用 git branch -m 命令来重命名分支
git branch -m astrowind
如果需要把改动推送到远程仓库,请执行以下命令
# 删除远程的 old_branch
git push origin --delete main
# 将新的分支推送到远程仓库(-u, --set-upstream 表示设置 astrowind 为当前分支的上游分支)
git push -u origin astrowind
# 6. Git 克隆特定分支
克隆仓库中的某个特定分支:
git clone -b <branch-name> <repository-url>
#例如,克隆 develop 分支,命令如下:
git clone -b develop https://github.com/username/repository.git
# 7. 从已克隆的主分支拉取其他分支
如果已经克隆了仓库的 main 分支,但希望拉取 develop 分支,可以按照以下步骤操作:
-
切换到仓库目录:
cd /path/to/your/repository -
检查并清理工作目录:确保没有未提交的更改,如果有未提交的更改,提交或暂存它们。
git status -
从远程仓库获取所有分支的最新信息:
git fetch origin -
如果本地没有
develop分支,创建并检出(checkout)本地的develop分支:git switch -c develop origin/develop若本地已有
develop分支并需要更新:git switch develop git pull origin develop
- ID: B2-V5+1.2.0
- 原文:https://blog.cc01cc.cn/2024/04/15/practical-skills-for-git/
- 署名:零一/cc01cc(zeo): https://github.com/cc01cc/
- 本作品采用署名-相同方式共享 4.0 国际(CC BY-SA 4.0 DEED)许可证进行许可,转载请标明源地址,谢谢
