git版本管理常见技巧
强制远程覆盖本地分支
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 2
git 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>
强制删除时要特别小心,因为未合并的更改将会丢失。