赞
踩
GitHub最受欢迎的交互式Git学习教程
- 在线学习地址:https://pcottle.github.io/learnGitBranching/
- 仓库地址:https://github.com/pcottle/learnGitBranching
不保留分支中的某些提交记录(日志打印等调试语句)
git rebase -i
或 git cherry-pick
即可确保
main
分支能得到bugFix
分支上的相关提交
方法1:
git checkout main
git cherry-pick C4
方法2:
git rebase -i HEAD~3
git checkout main
git rebase bugFix
对某个以前的提交记录进行一些小小的调整
一种思路:
先用 git rebase -i
将提交重新排序,然后把我们想要修改的提交记录挪到最前
然后用 git commit --amend
来进行一些小修改
接着再用 git rebase -i
来将他们调回原来的顺序
最后我们把 main 移到修改的最前端(用你自己喜欢的方法)
——对于 '
的数量上的不同,并不纳入对比范围内
git commit --amend
:对上一次提交有修改,可以修改文件也可以修改说明,不产生新的commit
git rebase -i HEAD~2 # 交换caption分支的C2和C3
git commit --amend # 重新提交C2
git rebase -i HEAD~2 # 交换caption分支的C3和C2
git branch -f main # 更新main分支到最新,空白默认为当前HEAD
# 或
git checkout main # 切换到main分支
git rebase caption # 更新main分支到最新caption
——本关不允许使用cherry-pick,否则的话直接
git checkout main
# 可以达到main分支要求
git cherry-pick C2 C3
# 达到修改C2提交的要求
git cherry-pick C2
git commit --amend
git cherry-pick C3
上一关进行了两次排序,而这有可能造成由 rebase 而导致的冲突
通过
--amend
改变提交记录C2
,但你不能用rebase -i
- 分支很容易被人为移动,并且当有新的提交时,它也会移动。分支很容易被改变,大部分分支还只是临时的,并且还一直在变。
- 有没有什么可以永远指向某个提交记录的标识?
git commit --amend
会创建新分支。git tag v1 C1
:我们将这个标签命名为 v1
,并且明确地让它指向提交记录 C1
,如果你不指定提交记录,Git 会用 HEAD
所指向的位置。按照目标建立两个标签,然后切换到
v1
上面,要注意你会进到分离HEAD
的状态 —— 这是因为不能直接在v1
上面做 commit。
git tag v0 C1
git tag v1 C2
git checkout v1
用来描述离你最近的锚点(也就是标签)
场景:当你用 git bisect
(一个查找产生 Bug 的提交记录的指令)找到某个提交记录时,或者是当你坐在你那刚刚度假回来的同事的电脑前时, 可能会用到这个命令。
语法是:git describe <ref>
<ref>
可以是任何能被 Git 识别成提交记录的引用,如果你没有指定的话,Git 会以你目前所检出的位置(HEAD
)输出结果为:<tag>_<numCommits>_g<hash>
tag
表示的是离 ref
最近的标签, numCommits
是表示这个 ref
与 tag
相差有多少个提交记录, hash
表示的是你所给定的 ref
所表示的提交记录哈希值的前几位。ref
提交记录上有某个标签时,则只输出标签名称git tag v2 C3
打好标记git describe main
输出:v1_2_gC2
git describe side
输出:v2_1_gC4
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。