git 清空log_[译] 我个人的 Git 技巧备忘录
- 原文地址:My Personal Git Tricks Cheatsheet
- 原文作者:Antonin Januska
- 譯文出自:掘金翻譯計(jì)劃
- 本文永久鏈接:https://github.com/xitu/gold-miner/blob/master/TODO1/my-personal-git-tricks-cheatsheet.md
- 譯者:Pingren
- 校對者:zh1an,Badd,shixi-li
我個(gè)人的 Git 技巧備忘錄
除了 “基礎(chǔ)的” 命令之外,每個(gè)人都有他們常用的 Git 技巧。我想列出我愿意在 .gitconfig 保存別名(alias)的命令。在文章末尾,你可以看到一些在 git 之外與 git 相關(guān)的有意思的命令!:)
快速糾正
我經(jīng)常忘記提交(commit)某文件,或者遺留了 console.log 在文件里。我十分討厭如 刪除 console.log 的提交。因此,我將添加文件至?xí)捍鎱^(qū),就好像我要提交一樣,接著運(yùn)行命令:
git commit --amend --reuse-message HEAD這個(gè)命令會(huì)將文件加入上次提交,并且重新使用舊的提交信息。我將它的別名設(shè)置為 git amend,用于快速修正錯(cuò)誤。
注意 基于底下評論區(qū)的回復(fù),也可以使用命令 git commit --amend --no-edit 達(dá)到一樣的效果。
在 origin/master 分支的頂部變基
舊的分支通常情況下會(huì)落后相當(dāng)久遠(yuǎn),久到我不得不準(zhǔn)備好消除編譯錯(cuò)誤、ci 錯(cuò)誤,或者解決沖突。此時(shí)我最喜歡使用以下命令:
git fetch origin # fetch latest origin git rebase origin/master通過這種方式,我將當(dāng)前分支的提交都疊加在最新版本的 master 分支之上。
上次的提交
有時(shí),git log 命令的結(jié)果冗長。由于我頻繁使用的前文中提過的 amend 命令,我傾向于查看最后一條提交記錄:
git log -1簽出到舊版文件 (比如一個(gè)鎖文件!)
有時(shí),我把某個(gè)與我的分支不相關(guān)文件搞壞了。這通常發(fā)生在鎖文件上(mix.lock、package-lock.json 等等)。我只是將這個(gè)文件“重置”回舊版本而不是還原一個(gè)可能包含許多其他內(nèi)容的提交:
git checkout hash值 mix.lock接著我就可以提交修復(fù)!
cherry-pick
我偶爾會(huì)使用這個(gè)被低估的命令。當(dāng)一個(gè)分支變得老舊,有時(shí)候從中只獲取真正需要的東西,比讓整個(gè)分支跟上進(jìn)度簡單。舉個(gè)例子,這個(gè)分支有關(guān)于 UI 或后端的冗余代碼。在這種情況下,我可能只想從分支中挑選出特定的提交:
git cherry-pick hash值這將會(huì)把提交帶到你所處的分支。你也可以使用列表!
git cherry-pick 第一個(gè)hash值 第二個(gè)hash值 第三個(gè)hash值你也可以使用區(qū)間:
git cherry-pick 開始的hash值..結(jié)束的hash值參考日志
這是一個(gè)高級(jí)功能,以至于我?guī)缀醪挥盟N业囊馑际?#xff0c;大概一年用一次。但是了解一下它還是挺好的。有時(shí),我丟失了提交:我不小心刪除了分支、重置或修改了一個(gè)提交。
在這些情況下,知道 reflog 的存在就挺好的。它不是你當(dāng)前所處的分支的提交日志,它是你所有提交(包括了在失效分支之上)的日志。然而,這個(gè)日志將會(huì)隨著時(shí)間推移被清空(pruned),因此只有有關(guān)的信息會(huì)保留。
git reflog這個(gè)命令將返回一個(gè)日志,你可以在某個(gè)提交之上使用挑選或者變基。使用 pipe 管道命令連接 grep 之后非常強(qiáng)大。
Bash 命令別名
除了 git 命令,我也喜歡使用一些有趣的 bash 別名來幫助我的工作流。
當(dāng)前分支
為了獲取當(dāng)前分支的名字,我有這個(gè)別名:
alias git-branch="git branch | sed -n -e 's/^* (.*)/1/p'"當(dāng)我運(yùn)行 git-branch 或者在其它命令中運(yùn)行 $(git-branch),我將得到我目前所在的分支的名字。
注意 基于評論區(qū)的回復(fù),我將它切換為 git symbolic-ref --short HEAD,可以達(dá)到一樣的效果并且命令更具有可讀性。
跟蹤上游分支
雖然我確定配置 .gitconfig 可以解決問題,我暫時(shí)還沒弄清楚如何做(譯者注:使用命令 git config --global push.default current,參見官方文檔)。當(dāng)我在新的分支上首次運(yùn)行推送命令時(shí),我總是被要求先設(shè)置上游分支的跟蹤狀態(tài)。這種情況下我使用別名:
alias git-up="git branch | sed -n -e 's/^* (.*)/1/p' | xargs git push -u origin "現(xiàn)在當(dāng)我運(yùn)行 git-up,我可以推送當(dāng)前的分支并設(shè)置好上游分支的跟蹤狀態(tài)!
回復(fù)
基于評論中一些有用的反饋,我對我所使用的別名做了一些修改。
當(dāng)前分支
似乎有許多新方式來獲取當(dāng)前的分支名稱。如果你往上看,你將看到我使用了一個(gè)瘋狂的 sed 命令來獲取分支名稱。
以下是我使用的新辦法:
alias git-branch="git symbolic-ref --short HEAD"它的運(yùn)行與期望完全一樣!
如果發(fā)現(xiàn)譯文存在錯(cuò)誤或其他需要改進(jìn)的地方,歡迎到 掘金翻譯計(jì)劃 對譯文進(jìn)行修改并 PR,也可獲得相應(yīng)獎(jiǎng)勵(lì)積分。文章開頭的 本文永久鏈接 即為本文在 GitHub 上的 MarkDown 鏈接。掘金翻譯計(jì)劃 是一個(gè)翻譯優(yōu)質(zhì)互聯(lián)網(wǎng)技術(shù)文章的社區(qū),文章來源為 掘金 上的英文分享文章。內(nèi)容覆蓋 Android、iOS、前端、后端、區(qū)塊鏈、產(chǎn)品、設(shè)計(jì)、人工智能等領(lǐng)域,想要查看更多優(yōu)質(zhì)譯文請持續(xù)關(guān)注 掘金翻譯計(jì)劃、官方微博、知乎專欄。
總結(jié)
以上是生活随笔為你收集整理的git 清空log_[译] 我个人的 Git 技巧备忘录的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 平衡二叉树平衡因子_数据结构:平衡二叉树
- 下一篇: flex 会使div撑满_如何讲清楚Fl