GitHub 進(jìn)階技巧

alias 命令縮寫

  • 設(shè)置縮寫別名:
    **git config --global alias.co checkout **
    git config --global alias.ci commit
    git config --global alias.st status
    git config --global alias.br branch
    以后就可以用縮寫代替了:
    git co
    git ci
    git st
    git br
  • 還可以設(shè)置組合縮寫:
    git config --global alias.psm 'push origin master'
    git config --global alias.plm 'pull origin master'
  • 更好看的 log:
    git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative

    利用縮寫:
    git config --global alias.lg "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative"
    以后用 git lg 就行了。

stash

假設(shè)我們正在一個(gè)新的分支做新的功能,這個(gè)時(shí)候突然有一個(gè)緊急的 bug 需要修復(fù),而且修復(fù)完之后需要立即發(fā)布。當(dāng)然你說我先把剛寫的一點(diǎn)代碼進(jìn)行提交不就行了么?這樣理論上當(dāng)然是 ok 的,但是這會產(chǎn)生垃圾 commit,原則上我們每次的 commit 都要有實(shí)際的意義,你的代碼只是剛寫了一半,還沒有什么實(shí)際的意義是不建議就這樣 commit 的,那么有沒有一種比較好的辦法,可以讓我暫時(shí)切到別的分支,修復(fù)完 bug 再切回來,而且代碼也能保留的呢?

  • 前提是代碼沒有進(jìn)行 commit ,哪怕執(zhí)行了 add 也沒關(guān)系,先執(zhí)行:
    git stash
    就是把當(dāng)前分支所有沒有 commit 的代碼先暫存起來。
  • 查看暫存區(qū)記錄:
    git stash list
  • 事情做完了,要還原代碼:
    git stash apply
  • 最后最好需要把暫存區(qū)的這次 stash 記錄刪除:
    git stash drop
    后面可以跟 stash_id 參數(shù)來刪除指定的某條記錄,不跟參數(shù)就是刪除最近的。
    或:
    git stash pop
    不但會幫你把代碼還原,還自動幫你把這條 stash 記錄刪除。
  • 清空所有暫存區(qū)的記錄:
    git stash clear

merge & rebase

  • 要合并分支,可以:
    git checkout master
    git merge featureA
    或:
    git checkout master
    git rebase featureA
  • 區(qū)別在于:
    rebasemerge 的區(qū)別你們可以理解成有兩個(gè)書架,你需要把兩個(gè)書架的書整理到一起去,第一種做法是 merge ,比較粗魯暴力,就直接騰出一塊地方把另一個(gè)書架的書全部放進(jìn)去,雖然暴力,但是這種做法你可以知道哪些書是來自另一個(gè)書架的;第二種做法就是 rebase ,他會把兩個(gè)書架的書先進(jìn)行比較,按照購書的時(shí)間來給他重新排序,然后重新放置好,這樣做的好處就是合并之后的書架看起來很有邏輯,但是你很難清晰的知道哪些書來自哪個(gè)書架。

  • 查看配置;
    git config -l
  • 比較兩次提交之間的差異:
    git diff <$id1> <$id2>
  • 在兩個(gè)分支之間比較:
    git diff <branch1>..<branch2>
  • 比較暫存區(qū)和版本庫差異:
    git diff --staged
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 申金鑫 17101223365 轉(zhuǎn)載自微信公眾號 stormzhang 【嵌牛導(dǎo)讀】:本教程詳細(xì)介紹了Github...
    Felixxin閱讀 467評論 0 2
  • 1.GitHub 有什么用 學(xué)習(xí)優(yōu)秀的開源項(xiàng)目開源社區(qū)一直有一句流行的話叫「不要重復(fù)發(fā)明輪子」,某種意義上正是因?yàn)?..
    Clemente閱讀 1,547評論 1 14
  • Add & Commit git init 初始化一個(gè) Git 倉庫(repository),即把當(dāng)前所在目錄變成...
    冬絮閱讀 5,125評論 0 9
  • 一、常見命令 git init : 初始化 git 倉庫,即將一個(gè)文件夾初始化為一個(gè) git 倉庫。具體的操作是創(chuàng)...
    胖三斤66閱讀 841評論 0 1
  • 輸入 y ,創(chuàng)建 git_hug 目錄No githug directory found, do you wish...
    風(fēng)花花閱讀 2,116評論 0 4

友情鏈接更多精彩內(nèi)容