Git高级操作
【摘要】 Git RebaseRebase是Git中一种强大但需谨慎使用的功能,它可以让提交历史更加整洁。 基本用法# 将当前分支变基到目标分支git rebase 目标分支# 交互式变基,可以编辑、合并、删除提交git rebase -i HEAD~3 # 对最近3个提交进行交互式变基 交互式变基命令在交互式变基中,可以使用以下命令:pick:保留该提交reword:保留该提交,但修改提交信息e...
Git Rebase
Rebase是Git中一种强大但需谨慎使用的功能,它可以让提交历史更加整洁。
基本用法
# 将当前分支变基到目标分支
git rebase 目标分支
# 交互式变基,可以编辑、合并、删除提交
git rebase -i HEAD~3 # 对最近3个提交进行交互式变基
交互式变基命令
在交互式变基中,可以使用以下命令:
pick:保留该提交reword:保留该提交,但修改提交信息edit:保留该提交,但暂停以便修改squash:将该提交合并到前一个提交fixup:将该提交合并到前一个提交,但不保留提交信息drop:删除该提交
变基的注意事项
- 不要对已经推送到远程仓库的提交进行变基
- 变基会改变提交历史,可能导致冲突
- 如果遇到冲突,解决后使用
git rebase --continue继续
Git Cherry-pick
Cherry-pick允许你选择性地将某个分支的特定提交应用到另一个分支。
基本用法
# 将指定的提交应用到当前分支
git cherry-pick 提交哈希
# 应用多个提交
git cherry-pick 提交哈希1 提交哈希2
# 应用一个范围的提交(不包括start)
git cherry-pick start..end
高级选项
# 只应用更改,不创建提交
git cherry-pick -n 提交哈希
# 在提交信息中添加原始提交的信息
git cherry-pick -x 提交哈希
Git Stash
Stash功能允许你暂存当前的修改,以便稍后再应用。
基本操作
# 暂存当前修改
git stash
# 暂存时添加描述信息
git stash save "修改描述"
# 查看暂存列表
git stash list
# 应用最近的暂存(不删除暂存记录)
git stash apply
# 应用指定的暂存
git stash apply stash@{2}
# 应用并删除最近的暂存
git stash pop
# 删除指定的暂存
git stash drop stash@{2}
# 清空所有暂存
git stash clear
高级用法
# 暂存未跟踪的文件
git stash -u
# 暂存所有文件(包括忽略的文件)
git stash -a
# 从暂存创建分支
git stash branch 新分支名 stash@{0}
Git Reset与Git Revert
这两个命令都可以用来撤销更改,但工作方式不同。
Git Reset
Reset会直接移动HEAD指针,修改提交历史。
# 软重置:保留工作区和暂存区的修改
git reset --soft HEAD~1
# 混合重置(默认):保留工作区的修改,但重置暂存区
git reset HEAD~1
# 或
git reset --mixed HEAD~1
# 硬重置:丢弃所有修改
git reset --hard HEAD~1
Git Revert
Revert会创建一个新的提交来撤销之前的更改,不会修改提交历史。
# 撤销最近的一次提交
git revert HEAD
# 撤销指定的提交
git revert 提交哈希
# 撤销多个提交
git revert 提交哈希1 提交哈希2
# 只撤销更改,不自动创建提交
git revert -n 提交哈希
使用场景对比
- Git Reset:适用于尚未推送到远程仓库的提交
- Git Revert:适用于已经推送到远程仓库的提交
Git Submodule
子模块允许你在一个Git仓库中包含另一个Git仓库。
基本操作
# 添加子模块
git submodule add 仓库地址 路径
# 初始化子模块
git submodule init
# 更新子模块
git submodule update
# 初始化并更新所有子模块
git submodule update --init --recursive
# 更新所有子模块到最新提交
git submodule update --remote
Git Bisect
Bisect是一个强大的调试工具,可以帮助你通过二分查找定位引入问题的提交。
使用步骤
# 开始二分查找
git bisect start
# 标记当前版本为有问题的版本
git bisect bad
# 标记一个已知正常的版本
git bisect good 提交哈希
# 在测试后标记当前版本的状态
git bisect good # 如果当前版本正常
git bisect bad # 如果当前版本有问题
# 结束二分查找
git bisect reset
自动化二分查找
# 使用脚本自动执行二分查找
git bisect start HEAD 正常的提交
git bisect run 测试脚本
Git Worktree
Worktree允许你在同一个仓库中同时检出多个分支。
# 创建新的工作树
git worktree add ../路径 分支名
# 列出所有工作树
git worktree list
# 删除工作树
git worktree remove 路径
# 清理已删除的工作树信息
git worktree prune
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)