git cherry-pick 最佳實踐

引題

最近公司項目腰素,成都小伙伴蛤织,在develop上合并了錯誤的代碼。
然后我們自己的分支上也合并了錯誤的代碼不翩。雖然最終develop的代碼回滾了兵扬,
錯誤的代碼丟掉,但是自己分支上錯誤的提交還在口蝠,創(chuàng)建merge request 的時器钟,發(fā)現(xiàn)一大堆不是自己寫的代碼,如何解決呢妙蔗?

cherry-pick

git-cherry-pick - Apply the changes introduced by some existing commits

git-scm#cherry-pick

拙略的英文俱箱,翻譯為:可以把已經(jīng)存在提交再次提交。

實戰(zhàn)

總體思路如下:找到自己本工單號灭必,本分支提交的commits狞谱,在新分值上merge這些commits乃摹。

第一步: 格式化輸出log

git log命令可一接受一個--pretty選項,來確定輸出的格式.
如果我們只想輸出hash.

   git log --pretty=format:"%h" 

git用各種placeholder 來決定各種顯示內(nèi)容:

  • %H: commit hash
  • %h: 縮短的commit hash
  • %T: tree hash
  • %t: 縮短的 tree hash
  • %P: parent hashes
  • %p: 縮短的 parent hashes
  • %an: 作者名字
  • %aN: mailmap的作者名字 (.mailmap對應(yīng)跟衅,詳情參照git-shortlog(1)或者git-blame(1))
  • %ae: 作者郵箱
  • %aE: 作者郵箱 (.mailmap對應(yīng)孵睬,詳情參照git-shortlog(1)或者git-blame(1))
  • %ad: 日期 (--date= 制定的格式)
  • %aD: 日期, RFC2822格式
  • %ar: 日期, 相對格式(1 day ago)
  • %at: 日期, UNIX timestamp
  • %ai: 日期, ISO 8601 格式
  • %cn: 提交者名字
  • %cN: 提交者名字 (.mailmap對應(yīng),詳情參照git-shortlog(1)或者git-blame(1))
  • %ce: 提交者 email
  • %cE: 提交者 email (.mailmap對應(yīng)伶跷,詳情參照git-shortlog(1)或者git-blame(1))
  • %cd: 提交日期 (--date= 制定的格式)
  • %cD: 提交日期, RFC2822格式
  • %cr: 提交日期, 相對格式(1 day ago)
  • %ct: 提交日期, UNIX timestamp
  • %ci: 提交日期, ISO 8601 格式
  • %d: ref名稱
  • %e: encoding
  • %s: commit信息標(biāo)題
  • %f: sanitized subject line, suitable for a filename
  • %b: commit信息內(nèi)容
  • %N: commit notes
  • %gD: reflog selector, e.g., refs/stash@{1}
  • %gd: shortened reflog selector, e.g., stash@{1}
  • %gs: reflog subject
  • %Cred: 切換到紅色
  • %Cgreen: 切換到綠色
  • %Cblue: 切換到藍(lán)色
  • %Creset: 重設(shè)顏色
  • %C(...): 制定顏色, as described in color.branch.* config option
  • %m: left, right or boundary mark
  • %n: 換行
  • %%: a raw %
  • %x00: print a byte from a hex code
  • %w([[,[,]]]): switch line wrapping, like the -w option of git-shortlog(1).

第二步: 根據(jù)需要輸出自己的commit

根據(jù)上述format掰读,定制

git log -150 --pretty=format:"%h %s %an %aD " | grep wanghao | grep xxxxx

其中 -150 表示輸出150次的commits

-<1number>, -n <1number>, --max-count=<1number>
Limit the number of commits to output.

  • %h : 縮短的commit hash
  • %s : commit信息標(biāo)題
  • %an : 作者名字
  • %aD : 日期, RFC2822格式

grep wanghao grep xxxxx 管道符輸出

是 wanghao 并且是工單 xxxxx 的commits

最終輸出如下:

98743af [rmxxxxx] Merge branch 'develop' xxxxx
2b48938 [rmxxxxx] rmxxxxxx wanghao 
3320829 [rmxxxxx] rmxxxxxx ****** wanghao Mon, 18 May 2015 14:42:51 +0800
1e09778 [rmxxxxx] rmxxxxxx ****** wanghao Sun, 17 May 2015 18:07:44 +0800

第三步: 運用強大的cherry-pick

    git checkout develop
    git pull origin develop
    git checkout -b feature/rmxxxxx_wanghao_20150521_xxxx
    git cherry-pick 2b48938 3320829 1e09778
    git branch -D feature/rmxxxxx_wanghao_20150521_xxxx_tmp
    
    git push origin :feature/rmxxxxx_wanghao_20150521_xxxx
    git push origin feature/rmxxxxx_wanghao_20150521_xxxx

bingo!

參考:
ruby-china#個性化你的Git log輸出格式

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市叭莫,隨后出現(xiàn)的幾起案子蹈集,更是在濱河造成了極大的恐慌,老刑警劉巖雇初,帶你破解...
    沈念sama閱讀 222,464評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拢肆,死亡現(xiàn)場離奇詭異,居然都是意外死亡靖诗,警方通過查閱死者的電腦和手機郭怪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來刊橘,“玉大人鄙才,你說我怎么就攤上這事〈倜啵” “怎么了攒庵?”我有些...
    開封第一講書人閱讀 169,078評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長败晴。 經(jīng)常有香客問我叙甸,道長,這世上最難降的妖魔是什么位衩? 我笑而不...
    開封第一講書人閱讀 59,979評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮熔萧,結(jié)果婚禮上糖驴,老公的妹妹穿的比我還像新娘。我一直安慰自己佛致,他們只是感情好贮缕,可當(dāng)我...
    茶點故事閱讀 69,001評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著俺榆,像睡著了一般感昼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上罐脊,一...
    開封第一講書人閱讀 52,584評論 1 312
  • 那天定嗓,我揣著相機與錄音蜕琴,去河邊找鬼。 笑死宵溅,一個胖子當(dāng)著我的面吹牛凌简,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播恃逻,決...
    沈念sama閱讀 41,085評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼雏搂,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了寇损?” 一聲冷哼從身側(cè)響起凸郑,我...
    開封第一講書人閱讀 40,023評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎矛市,沒想到半個月后芙沥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,555評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡尘盼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,626評論 3 342
  • 正文 我和宋清朗相戀三年憨愉,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片卿捎。...
    茶點故事閱讀 40,769評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡配紫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出午阵,到底是詐尸還是另有隱情躺孝,我是刑警寧澤,帶...
    沈念sama閱讀 36,439評論 5 351
  • 正文 年R本政府宣布底桂,位于F島的核電站植袍,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏籽懦。R本人自食惡果不足惜于个,卻給世界環(huán)境...
    茶點故事閱讀 42,115評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望暮顺。 院中可真熱鬧厅篓,春花似錦、人聲如沸捶码。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,601評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽惫恼。三九已至档押,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背令宿。 一陣腳步聲響...
    開封第一講書人閱讀 33,702評論 1 274
  • 我被黑心中介騙來泰國打工叼耙, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人掀淘。 一個月前我還...
    沈念sama閱讀 49,191評論 3 378
  • 正文 我出身青樓旬蟋,卻偏偏與公主長得像,于是被迫代替她去往敵國和親革娄。 傳聞我的和親對象是個殘疾皇子倾贰,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,781評論 2 361

推薦閱讀更多精彩內(nèi)容

  • Add & Commit git init 初始化一個 Git 倉庫(repository),即把當(dāng)前所在目錄變成...
    冬絮閱讀 4,854評論 0 9
  • git常用命令 GIT常用命令備忘:http://stormzhang.com/git/2014/01/27/gi...
    新篇章閱讀 8,499評論 1 26
  • 親愛的自己拦惋, 這竟然是自己寫的第60封情書匆浙,完全沒想到自己可以堅持這么久,需要Mark一下厕妖。盡管與同伴比起來我還是...
    Syneysun閱讀 407評論 0 1
  • 文/熠歆 七夕征文 在簡書上看到“七夕征文”首尼,我好奇的點了進去,在簡書快8個月了言秸,遇到很多志趣相投的簡友软能,唯獨未曾...
    熠歆閱讀 438評論 18 8
  • 歌曲鏈接:http://music.163.com/#/song?id=27698223 洛德(lorde),出生...
    任時光寂靜閱讀 1,376評論 2 3