Git常用命令分享

Git常用命令

Git操作
  • git diff vs git log
  • git pull vs git fetch
  • git rebase
  • git revert
  • git reset vs git checkout vs git revert
  • ^ 和 ~
  • alias

1 git diff vs git log

  • git diff master..test
    比較master與test差異
  • git log master..test
    查看test中尚未并入master的提交
  • git diff master…test
    比較master與test共有分支與test分支的差異
  • git log master…test
    查看只被master或test中某一個(gè)包含的差異性提交净赴,加上--left-right可顯示包含方
  • git diff支持目錄提交差異洒忧,git log支持文件提交差異
    git diff HEAD -- ./dir 比較dir目錄與HEAD提交的差異
    git log file 查看file提交歷史
  • git diff --stat
    統(tǒng)計(jì)所有改動(dòng)
  • git log --stat
    統(tǒng)計(jì)提交改動(dòng)

2 git pull vs git fetch

  • git fetch
    下載遠(yuǎn)程分支犹撒,然后更新本地FETCH_HEAD文件
    git fetch : git fetch origin
  • git pull
    下載遠(yuǎn)程分支次员,然后合并至當(dāng)前HEAD
    git pull = git fetch + git merge FETCH_HEAD

多用git fetch嘀趟,少用git pull

3 git rebase

  • 線性提交 與git merge功能類似
    git merge:新的提交將分支的提交歷史連在一起诫尽,生成merge提交
    git rebase:重寫提交歷史晴玖,把整個(gè)分支移動(dòng)到待合并分支后
  • 壓縮提交
    刪除不必要的提交

線性提交

  • merget提交


  • rebase提交


  • 一個(gè)實(shí)例
  • merge


    merge
  • rebase


    rebase

壓縮提交

git rebase 使用

使用git rebase:一個(gè)干凈的职抡、線性的提交歷史

  • git rebase <branch>
    以<branch>為基,重寫當(dāng)前提交歷史 [可以加上 -i]
  • git merge-base <branch1> <branch2>
    返回基提交ID
  • git rebase –i HEAD~3
    重寫當(dāng)前HEAD最新3次提交歷史
  • git pull –rebase
    通過變基來整合遠(yuǎn)程分支

注意:
rebase會(huì)重寫提交歷史眯分,不要在公共的分支上使用

4 git revert

  • git revert
    生成一個(gè)新的提交拌汇,撤銷一個(gè)已經(jīng)存在提交的所有修改

對于merge commit的提交:git revert –m 1[2] <commit>
-m i :需要保留的父節(jié)點(diǎn)是第i父提交

git revert
  • git revert需要注意的問題
    合并曾經(jīng)被revert的提交,會(huì)保留revert的信息弊决,從而導(dǎo)致部分提交無法應(yīng)用到新的分支噪舀,解決這個(gè)最好的方式是撤消還原原始的合并


    撤銷還原

5 git reset vs git checkout vs git revert

提交層面

  • git reset
    reset將分支的末端指向另一個(gè)提交,移除當(dāng)前提交
  • git checkout
    checkout移動(dòng)HEAD指向某個(gè)引用
  • git revert
    重新生成一個(gè)提交增加到當(dāng)前的commit

git reset --soft –mixed --hard

git reset作用域

文件層面

  • git reset
    將緩存區(qū)同步至指定的提交飘诗,不影響工作目錄
  • git checkout
    將工作目錄同步至指定的提交与倡,不影響提交
  • git revert
    無文件層面操作

總結(jié)

命令 作用域 常用情景
git reset 提交層面 在私有分支上舍棄一些沒有提交的更改
git reset 文件層面 將文件從緩存區(qū)中移除
git checkout 提交層面 切換分支或查看舊版本
git checkout 文件層面 舍棄工作目錄中的更改
git revert 提交層面 在公共分支上回滾更改
git revert 文件層面 (然而并沒有)

6 ^ 和 ~

  • 相當(dāng)于父提交,有多個(gè)父提交時(shí)昆稿,加上數(shù)字表示第幾個(gè)父提交纺座,相當(dāng)于^1
  • ~n相當(dāng)于連續(xù)的n個(gè)^
    一個(gè)例子

    HEAD^:4927 HEAD^2:063f HEAD^3:4f9c
    HEAD~:4927 HEAD~2:1c73

7 alias

  • st=status co=checkout br=branch ci=commit
  • mg=merge md=commit --amend dt=difftool mt=mergetool
  • last=log -1 HEAD cf=config line=log --oneline visual=!gitk
  • ls=log --pretty=format:\"%C(yellow)%h %C(blue)%ad %C(red)%d %C(reset)%s %C(green)[%cn]\" --decorate --date=short
  • hist = log --pretty=format:\"%C(yellow)%h %C(red)%d %C(reset)%s %C(green)[%an] %C(blue)%ad\" --topo-order --graph --date=short
  • lg=log --color --graph --pretty=format:"%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset" --abbrev-commit
  • ld = log --pretty=format:"%C(yellow)%h\\ C(green)%ad%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --date=short --graph

深入學(xué)習(xí)

git recipes

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市溉潭,隨后出現(xiàn)的幾起案子净响,更是在濱河造成了極大的恐慌少欺,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,430評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件馋贤,死亡現(xiàn)場離奇詭異赞别,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)配乓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評論 3 398
  • 文/潘曉璐 我一進(jìn)店門仿滔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人犹芹,你說我怎么就攤上這事崎页。” “怎么了腰埂?”我有些...
    開封第一講書人閱讀 167,834評論 0 360
  • 文/不壞的土叔 我叫張陵飒焦,是天一觀的道長。 經(jīng)常有香客問我盐固,道長荒给,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,543評論 1 296
  • 正文 為了忘掉前任刁卜,我火速辦了婚禮志电,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蛔趴。我一直安慰自己挑辆,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,547評論 6 397
  • 文/花漫 我一把揭開白布孝情。 她就那樣靜靜地躺著鱼蝉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪箫荡。 梳的紋絲不亂的頭發(fā)上魁亦,一...
    開封第一講書人閱讀 52,196評論 1 308
  • 那天,我揣著相機(jī)與錄音羔挡,去河邊找鬼洁奈。 笑死,一個(gè)胖子當(dāng)著我的面吹牛绞灼,可吹牛的內(nèi)容都是我干的利术。 我是一名探鬼主播,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼低矮,長吁一口氣:“原來是場噩夢啊……” “哼印叁!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,671評論 0 276
  • 序言:老撾萬榮一對情侶失蹤轮蜕,失蹤者是張志新(化名)和其女友劉穎昨悼,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體肠虽,經(jīng)...
    沈念sama閱讀 46,221評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡幔戏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,303評論 3 340
  • 正文 我和宋清朗相戀三年玛追,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了税课。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,444評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡痊剖,死狀恐怖韩玩,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情陆馁,我是刑警寧澤找颓,帶...
    沈念sama閱讀 36,134評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站叮贩,受9級特大地震影響击狮,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜益老,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,810評論 3 333
  • 文/蒙蒙 一彪蓬、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧捺萌,春花似錦档冬、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,285評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至态坦,卻和暖如春盐数,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背伞梯。 一陣腳步聲響...
    開封第一講書人閱讀 33,399評論 1 272
  • 我被黑心中介騙來泰國打工玫氢, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人壮锻。 一個(gè)月前我還...
    沈念sama閱讀 48,837評論 3 376
  • 正文 我出身青樓琐旁,卻偏偏與公主長得像,于是被迫代替她去往敵國和親猜绣。 傳聞我的和親對象是個(gè)殘疾皇子灰殴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,455評論 2 359

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