强制远程覆盖本地分支
1 | git fetch --all && git reset --hard origin/master && git pull |
其中origin/master为远程分支名,查询相应的远程分支名请使用:
1 | git branch -r |
拓展:查询本地仓库分支名
1 | git branch -a |
Tips:
不起效的话,先把本地分支的更改暂存,然后执行git reset试试。
撤回已提交远程的commit,更改暂存本地
参考文档
省流
- 开两个
git bash - 其中一个使用命令
git log查询需回退的commit相应版本号,复制 - 另一个使用命令:
1 | git reset --soft 版本号 |
拓展:撤回上一个提交:
1 | git reset --soft HEAD~1 |
- 强制同步到远程分支:
1 | git push --force |
此操作不影响本地更改
vscode中手动撤回上次提交也是很方便的
合并某次提交至指定分支
与上一主题类似,取版本号后,切换到需要合并至的分支:
1 | git checkout branch-name |
拓展:新建分支
1 | git checkout -b new-branch-name |
合并提交至本分支:
1 | git cherry-pick <commit-hash> |
执行后,若有冲突,会在相应文件中显示,vscode打开可一一核对,核对后在右下角检查完成合并即可。
TODO: 如何快速强制覆盖
与主库同步进度(变基)
在提交 Pull Request (PR) 之前,建议你将你的分支变基到最新的远程主库,这样可以确保你的代码和主库是最新的,从而减少潜在的合并冲突。这是一个良好的实践。
获取最新的远程分支信息:
首先,你需要确保你的本地仓库是最新的。运行以下命令来获取远程代码的最新状态:
1
git fetch origin
切换到你的工作分支:
1
git checkout feature-branch
执行变基:
现在,可以将你的分支变基到最新的远程主分支(例如
main或develop,具体取决于你的项目):1
git rebase origin/main
这将重放你的提交在最新的远程分支之上,确保你的代码是基于最新状态的。
解决冲突(如果有的话):
如果在变基过程中遇到冲突,Git 会提示你解决这些冲突。你需要手动编辑相关文件以解决冲突。解决完后,继续变基:
1
2git add <resolved_file>
git rebase --continue如果需要放弃变基,可以运行:
1
git rebase --abort
推送到远程库:
一旦变基成功,就可以推送了。
有时,你需要强制推送你的分支到远程库,因为变基会更改提交历史:1
git push origin feature-branch --force
注意: 强制推送会覆盖远程分支的历史,请确保你是在你自己的特性分支上,且对其他人没有影响。
删除远程分支
要删除 Git 中的远程分支,可以使用以下命令。首先,确保你已经在本地更新了远程分支列表,以便获取最新的状态。
1. 更新远程分支列表
你可以运行以下命令来更新远程分支信息:
1 | git fetch --prune |
这将清理本地引用中已经被删除的远程分支。
2. 删除远程分支
要删除远程分支,使用以下命令格式:
1 | git push <remote_name> --delete <branch_name> |
例如,如果你要删除名为 feature-branch 的远程分支,且远程仓库的名称为 origin,可以运行:
1 | git push origin --delete feature-branch |
3. 验证删除
删除远程分支后,你可以使用以下命令查看远程分支列表,确认分支是否已被删除:
1 | git branch -r |
这将列出所有远程分支,以确保你所删除的分支不再显示在列表中。
注意事项
- 确保在删除远程分支之前,其他团队成员或依赖该分支的工作已做好准备。
- 删除远程分支是不可逆的操作,请确认操作的必要性。
删除本地分支
1 | git branch -d <branch-name> |
这里的 <branch-name> 应该替换为你想要删除的分支的名称。
请注意,这个命令只会删除已经合并到主干分支(通常是 master 或 main)的分支。如果你想要强制删除一个尚未合并的分支,可以使用:
1 | git branch -D <branch-name> |
强制删除时要特别小心,因为未合并的更改将会丢失。