小游戏学Git(二)

移动提交记录

git cherry-pick

自由修改提交树 git cherry-pick

git cherry-pick <提交号>

如果你想将一些提交复制到当前所在的位置(HEAD)下面的话, Cherry-pick 是最直接的方式了。我个人非常喜欢 cherry-pick,因为它特别简单。

UTOOLS1568688842466.png

在master分支上,使用git cherry-pick C2 C4 就把side分支上的C2和C4分支复制过来了,非常优秀


交互式 rebase

git rebase -i HEAD~3 -i 代表 interact 交互,这样会弹出一个交互界面

UTOOLS1568689034311.png

在目标分支输入 git rebase -i HEAD~3

UTOOLS1568689676638.png

可以删除提交,拖动修改顺序

UTOOLS1568689765890.png

这里主要记住git cherry-pick, 工作中常用

杂项

技术、技巧和小贴士集合

场景一

我正在解决某个特别棘手的 Bug,为了便于调试而在代码中添加了一些调试命令并向控制台打印了一些信息。

这些调试和打印语句都在它们各自的提交记录里。最后我终于找到了造成这个 Bug 的根本原因,解决掉以后觉得沾沾自喜!

最后就差把 bugFix 分支里的工作合并回 master 分支了。你可以选择通过 fast-forward 快速合并到 master 分支上,但这样的话 master 分支就会包含我这些调试语句了。你肯定不想这样,应该还有更好的方式……

实际上我们只需要让Git复制解决问题的那个提交就可以了。 这里我们可以使用cherry-pick 或者 rebase -i

git cherry-pick <hash值>

场景二

你之前在 newImage 分支上进行了一次提交,然后又基于它创建了 caption 分支,然后又提交了一次。

此时你想对的某个以前的提交记录进行一些小小的调整。比如设计师想修改一下 newImage 中图片的分辨率,尽管那个提交记录并不是最新的了。

用git rebase 可以先将 提交2 和提交3进行更换,然后更改提交2(amend,附加提交),再进行交换提交2和提交3

UTOOLS1568690632413.png

场景三

分支很容易被人为移动,并且当有新的提交时,它也会移动。分支很容易被改变,大部分分支还只是临时的,并且还一直在变。

有没有什么永远指向某个提交记录的标识呢? git tag

UTOOLS1568691221101.png

除非删除了某个提交,否则这个tag永远就是标识这次提交

场景四

git describe :找出和你距离最近的tag

UTOOLS1568691532735.png

例子哈

UTOOLS1568691569895.png

对你有用的话,就点个赞吧!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章