【轉(zhuǎn)載】如何優(yōu)雅地使用Git叹俏?

之前看過一個特別有趣的網(wǎng)站 - Oh shit, git!

這個網(wǎng)站上面整理了一些 Git 新手在使用 Git 時常會遇到的各種突發(fā)狀況泛释,并貼心的給出了應(yīng)對方案滤愕。

我大致瞄了一眼,文章里面提到的一些問題怜校,大部分新手確實會經(jīng)常遇到间影,我簡單翻譯了一下,希望對你有所幫助茄茁。

注:為了使場景描述更加生動魂贬,因此加入了新手女神與高級舔狗兩個角色來配合講解

女神:哎呀,剛剛有個地方搞錯了裙顽,怎么重新來過呢付燥?

女神莫慌,Git 的牛逼之處愈犹,在于它自帶時光機效果键科,能讓你在項目的歷史代碼中任意穿梭。

如果項目的某一處地方它自己不小心壞掉了漩怎,不妨試下下面的這行命令:

$ git reflog

這條命令能列出你在 Git 上的所有操作記錄勋颖,你只要找到 HEAD@{index} 前面所對應(yīng)的操作索引,并使用下面命令即可:

$ git reset HEAD@{index}

注:使用時需將HEAD@{index}替換為對應(yīng)索引勋锤。

女神:想改個小東西饭玲,但代碼不小心提交(commit)了,這可咋整叁执?

這個簡單茄厘,首先,添加下當前已改動的代碼:

$ git add .

然后谈宛,運行下面這條命令次哈,它就會把你剛剛添加的代碼合并到最后一次提交上了:

$ git commit --amend

女神:哼!剛剛寫的提交歷史寫得不夠好吆录,我想重寫一下窑滞!

好的,還是上面提到過的那條代碼,運行一下葛假,就可以重寫提交歷史啦:

$ git commit --amend

女神:這下慘了障陶,我剛剛不小心把新分支的代碼提交到主分支上了!

女神別著急聊训,我們一步步來抱究,你先創(chuàng)建個新分支(some-new-branch-name):

$ git branch some-new-branch-name

然后把剛才的提交從主分支中移除:

$ git reset HEAD~ --hard

需要注意的是,上面的代碼只會切換到最后一條提交記錄上带斑,如果你已跑到其它提交記錄上怎么辦鼓寺?沒關(guān)系,你可以用 git reset HEAD@{number} 再跑回來勋磕。

等你跑回來之后妈候,我們再切換到新分支上:

$ git checkout some-new-branch-name

好了,完成啦挂滓,現(xiàn)在主分支干干凈凈苦银,剛剛不小心提交的代碼也被移到新分支上了。

需要注意的是赶站,上面的代碼只對本地倉庫有效幔虏,如果你已經(jīng)把代碼提交到遠程倉庫上,那就得跟隊友商量下解決方案了贝椿。

啥想括?我就是你隊友?這可真讓我受寵若驚?? 不過沒事烙博,等下我?guī)湍阍诰€上主分支上 reset 然后 push -f 一下就好啦~

女神:完蛋了瑟蜈,我把代碼提交到錯誤的分支上了!

別怕別怕渣窜,有我在呢铺根。

我們先撤銷最后一次提交,但保留變更代碼:

$ git reset HEAD~ --soft
$ git stash

再切到你想要提交的正確分支(name-of-the-correct-branch)上图毕,并把變更代碼提交上去:

$ git checkout name-of-the-correct-branch
$ git stash pop
$ git add .
$ git commit -m "your message here"

OK夷都,到這里就搞定了眷唉。

如果想要逼格高點予颤,也可以用 cherry-pick 這個命令來完成上面那些操作。具體的操作步驟如下冬阳。

首先蛤虐,切換到正確的分支上:

$ git checkout name-of-the-correct-branch

然后使用 cherry-pick 來獲取最新一條提交記錄:

$ git cherry-pick master

最后再把主分支上那條提交錯誤的記錄刪除:

$ git checkout master
$ git reset HEAD~ —-hard

女神:咦?為啥我運行 diff 后啥都沒有肝陪?

遇到這種情況驳庭,應(yīng)該是文件沒有加入到暫存區(qū)的緣故。解決方案很簡單,咱們要么把文件加入到暫存區(qū)饲常,要么就直接使用下面這條命令:

$ git diff --staged

這樣蹲堂,就可以看到未存入暫存區(qū)文件的 diff 效果啦。

女神:這項目怎么這么亂贝淤!好煩吶柒竞!我不玩了!

別氣別氣播聪,別氣壞了身子就不好了朽基,么么噠

如果本地代碼倉庫把自己折騰得亂七八糟,不用怕离陶,用下面這招稼虎,一擊必殺:

$ cd ..
$ sudo rm -r fucking-git-repo-dir
$ git clone https://some.github.url/fucking-git-repo-dir.git
$ cd fucking-git-repo-dir

是的,這就是備胎(線上倉庫)的強大之處招刨,只要你備胎尚在霎俩,你就可以大大方方的把本地倉庫刪了,clone 備胎沉眶,從頭再來茸苇。

女神:好啦,我沒什么問題了沦寂,謝謝你哦~

不不不学密,這塊問題還多著呢?你打開下面這個網(wǎng)站传藏,聽我跟你細細道來…

https://stackoverflow.com/questions/tagged/git

歡迎關(guān)注公眾號:GitHubDaily腻暮,發(fā)現(xiàn)更多好玩的 GitHub 項目。

作者:GitHub Daily
鏈接:https://www.zhihu.com/question/20866683/answer/711725573
來源:知乎

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末毯侦,一起剝皮案震驚了整個濱河市哭靖,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌侈离,老刑警劉巖试幽,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異卦碾,居然都是意外死亡铺坞,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進店門洲胖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來济榨,“玉大人,你說我怎么就攤上這事绿映∏芑” “怎么了腐晾?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長丐一。 經(jīng)常有香客問我藻糖,道長,這世上最難降的妖魔是什么库车? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任颖御,我火速辦了婚禮,結(jié)果婚禮上凝颇,老公的妹妹穿的比我還像新娘潘拱。我一直安慰自己,他們只是感情好拧略,可當我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布昔园。 她就那樣靜靜地躺著蒲讯,像睡著了一般乓旗。 火紅的嫁衣襯著肌膚如雪嗤攻。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天袱饭,我揣著相機與錄音川无,去河邊找鬼。 笑死虑乖,一個胖子當著我的面吹牛懦趋,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播疹味,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼仅叫,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了糙捺?” 一聲冷哼從身側(cè)響起诫咱,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎洪灯,沒想到半個月后坎缭,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡签钩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年掏呼,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片边臼。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡哄尔,死狀恐怖假消,靈堂內(nèi)的尸體忽然破棺而出柠并,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布臼予,位于F島的核電站鸣戴,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏粘拾。R本人自食惡果不足惜窄锅,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望缰雇。 院中可真熱鬧入偷,春花似錦、人聲如沸械哟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽暇咆。三九已至锋爪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間爸业,已是汗流浹背其骄。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留扯旷,地道東北人拯爽。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像钧忽,于是被迫代替她去往敵國和親某抓。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,722評論 2 345

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

  • 使用這12個Git的訣竅與技巧來令你的版本控制經(jīng)驗更加有用备禀。 Git,一個分布式版本控制系統(tǒng)奈揍,它已經(jīng)成為了開源世界...
    Alukar閱讀 329評論 0 1
  • 修改最后一個提交記錄 ? 當提交的信息不明確曲尸、不符合規(guī)范或包含敏感信息時,則可以先在本地使用 git comm...
    JungleTian閱讀 6,112評論 0 52
  • 把已有的代碼建立git并上傳git initgit remote add origin https://gitla...
    Captain_tu閱讀 348評論 0 0
  • 我是黑夜里大雨紛飛的人啊 1 “又到一年六月男翰,有人笑有人哭另患,有人歡樂有人憂愁,有人驚喜有人失落蛾绎,有的覺得收獲滿滿有...
    陌忘宇閱讀 8,521評論 28 53
  • 人工智能是什么昆箕?什么是人工智能鸦列?人工智能是未來發(fā)展的必然趨勢嗎?以后人工智能技術(shù)真的能達到電影里機器人的智能水平嗎...
    ZLLZ閱讀 3,763評論 0 5