小遊戲學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

對你有用的話,就點個贊吧!

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