Git常用命令

本篇是根據(jù)ProGit整理的常用Git命令夺谁,注釋比較簡單邦鲫,如需詳細了解Git,請閱讀ProGit例获。

  • 狀態(tài)檢查
git status  (查看git狀態(tài)報告)
git status -s  (以緊湊的格式輸出git狀態(tài))
git diff  (查看修改后還沒暫存起來的內(nèi)容)
git diff --cached  (查看已暫存的將要添加到下次提交里的內(nèi)容)
git diff branchA branchB  (查看具體的不同內(nèi)容,branchB多提交哪些內(nèi)容)
git difftool  (使用圖形化的界面查看文件差異)
git reflog  (查看命令歷史)
git remote  (查看已配置的遠程倉庫名字 -v顯示對應的URL)
git remote show <remote-name>  (查看遠程倉庫的具體信息)
git branch  (查看當前所有的分支)
git branch -v  (查看每個分支的最后一次提交)
git branch --no-merged  (查看所有未合并到當前分支的分支 --merged是已合并的分支)
  • 標簽管理
git tag  (以字母順序列出已有tag)
git tag -a <version> -m "message"  (創(chuàng)建一個附注標簽,推薦)
git tag -a <version> -m "message" <commitId>  (后期打標簽)
git tag <version>  (創(chuàng)建一個輕量標簽)
git tag -d <version>  (刪除標簽)
git push origin <tagName>  (推送標簽到遠程倉庫,因為默認不會推送標簽到遠程倉庫印叁,需顯示推送)
git push origin --tags  (將所有不在遠程倉庫的標簽全部推送上去)
  • 遠端與本地的交互
//使用Git管理項目
git init (在現(xiàn)有目錄中初始化倉庫被冒,對現(xiàn)有項目進行管理)
git clone https://github.GreenBeanD/project [newName]  (克隆一個Git倉庫,[]內(nèi)容為可選军掂,意為重命名倉庫的名字)
git remote add <name> <url>  (添加一個新的遠程倉庫并指定引用名稱例如origin)
git fetch <remote-name>  (從遠程倉庫獲取數(shù)據(jù),不會自動合并)
git pull  (從遠程倉庫獲取數(shù)據(jù),自動合并到當前所在分支,這是在只有一個追蹤分支時的省略參數(shù)指令)
git pull <remote-name> <remoteBranch-name>:<localBranch-Name>  (將遠程倉庫的指定分支合并到本地的指定分支,不帶冒號后的內(nèi)容意味合并到當前分支)

//添加遠程倉庫分支到本地
//git pull默認不會將遠程倉庫的所有分支同步到本地姆打,所以我們需要手動的添加一些需要的遠程倉庫的分支良姆,主要過程是:
//在本地新建一個分支并將此與遠程分支關(guān)聯(lián)
git branch -r //查看遠程分支,假設(shè)我們要添加遠程倉庫的dev分支`origin/dev`
git branch dev origin/dev //新建分支并關(guān)聯(lián),這里最好保持本地分支和遠程分支名稱一致幔戏,可以避免pull的時候需要指定本地分支的名字
git pull origin dev //將遠程分支dev數(shù)據(jù)同步到本地dev分支
// 本地分支已存在想直接關(guān)聯(lián)線上的分支
git fetch origin 分支名(然后就可以push到線上了)

git push <remote-name> <branch-name>  (將本地分支推到遠程主分支)
git remote rename <oldname> <newname>  (重命名遠程倉庫)
git remote rm <remote-name>  (刪除遠程倉庫)
  • 提交與修改
//使用Git提交
git add <file>  (開始跟蹤文件或?qū)⒁迅櫸募湃霑捍鎱^(qū)玛追,添加當前全部文件: git add .)
git commit -m "提交"  (提交修改)
git commit -a -m "提交"  (跳過add步驟直接提交,只會自動添加跟蹤過但未暫存的文件闲延,未跟蹤的文件不會自動跟蹤)
//移除文件
git rm <file>  (從工作目錄中刪除文件痊剖,文件真的就沒有了哦)
git rm -f <file>  (對于之前修改過并已放入暫存區(qū)域的文件,必須強制刪除)
git rm --cached <file>  (從倉庫中移除垒玲,但在工作目錄中保留陆馁,換句話說移除跟蹤,文件保留)
//文件重命名
git mv <oldName> <NewName> 
//撤銷操作
git commit --amend  (重新提交合愈,所以在此操作之前應該補全漏掉的操作)
git reset <file>  (取消文件暫存操作)(reset操作可用于版本回退)
git reset --hard  (取消某個提交之后的所有修改)
          --hard 表示取消某個提交之后的所有修改并且不保留被修改的部分
          --mixed 表示取消某個提交之后的所有修改但是保留被修改的部分叮贩,reset默認是mixed
git checkout -- <file>  (撤銷指定文件當前的所有修改到暫存狀態(tài)或最初狀態(tài),視文件為已暫存還是未暫存決定)
//不得不說的reset和revert
//git revert 是生成一個新的提交來撤銷某次提交佛析,此次提交之前的commit都會被保留
//git reset 是回到某次提交益老,提交及之前的commit都會被保留,但是此次之后的修改都會被退回到暫存區(qū) --hard是直接放棄所有修改寸莫,不會保留
git revert commitId
  • 分支模型部分
git branch <branchName>  (創(chuàng)建新分支)
git checkout <branchName>  (切換到指定分支)
git checkout -b <branchName>  (創(chuàng)建并切換到指定分支)
git branch -d <branchName>  (刪除指定分支 -D強制刪除)
git merge <branchName>  (將指定分支合并到當前分支)
git rebase <branchName>  (將指定分支以rebase的方式合并到當前分支捺萌,這種方式合并后的分支是一條直線,強迫癥患者的福音)
git mergetool  (使用圖形化工具來解決沖突)

簡單說明下rebase:


rebase-origin.png

rebase-end.png

上邊兩圖分表代表了rebase之前和之后的分支路線膘茎,可見桃纯,當前分支topic分支中的修改被依次添加到master分支新增內(nèi)容之后,這樣合并后的分支不會分叉披坏。
如果在rebase過程中發(fā)生了沖突态坦,在命令行中會提示在哪一個文件中發(fā)生了沖突,到對應文件中修改之后執(zhí)行g(shù)it add 然后繼續(xù)rebase --continue即可刮萌。

  • Log部分
git log  (按提交時間列出所有更新)
git log -p -2  (-p用來顯示每次提交的內(nèi)容差異 -2用來限定顯示數(shù)量驮配,數(shù)字可以任意填寫,當然數(shù)量這個參數(shù)也可不指定,Git會自動分頁)
git log --stat  (查看每次提交的簡略統(tǒng)計信息,如修改數(shù)量 --shortstat 簡短的顯示)
git log --name-only  (僅在提交信息后顯示已修改的文件清單)
git log --name-status   (顯示新增着茸、修改、刪除的文件清單)
git log --graph  (帶有分支合并歷史的展示方式)
git log --pretty=oneline  (將每個提交放在一行顯示,除了online還有short琐旁、full涮阔、fuller等)
git log --pretty=format:"%h - %s"  (按指定格式輸出記錄format后可以自定義任意的輸出格式)
`  %H  (提交對象(commit)的完整哈希字串)  %h  (提交對象的簡短哈希字串)
`  %T  (樹對象(tree)的完整哈希字串)  %t  (樹對象的簡短哈希字串)
`  %P  (父對象(parent)的完整哈希字串)  %p  (父對象的簡短哈希字串)
`  %an (作者(author)的名字)  %ae (作者的電子郵件地址)  
`  %ad (作者修訂日期(可以用 -date= 選項定制格式))  %ar (作者修訂日期,按多久以前的方式顯示)
`  %cn (提交者(committer)的名字)  %ce (提交者的電子郵件地址)
`  %cd (提交日期(可以用 -date= 選項定制格式))  %cr (提交日期灰殴,按多久以前的方式顯示)
`  %s  (提交說明)
git log --left-right branch1...branch2   (只查看不同的提交,該指令會列出兩個分支不同的提交敬特,branchA的提交用<標識掰邢,branchB的提交用>標識)
     例如:commit > 9f9b4f383c521b3598c008c1a0 (HEAD -> branchA)
     commit < 3598c008c1a03598c008c1a0 (HEAD -> branchB)
git log branchA..branchB  (查看branchB比branchA多的提交)
git log --oneline --decorate  (查看各個分支當前所指對象 --oneline可省略,僅用來指明在一行顯示)
git log --oneline --decorate --graph --all  (查看提交歷史伟阔,各個分支的指向以及項目的分支分叉情況)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末辣之,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子皱炉,更是在濱河造成了極大的恐慌怀估,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件合搅,死亡現(xiàn)場離奇詭異多搀,居然都是意外死亡,警方通過查閱死者的電腦和手機灾部,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門康铭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人赌髓,你說我怎么就攤上這事从藤。” “怎么了锁蠕?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵夷野,是天一觀的道長。 經(jīng)常有香客問我匿沛,道長扫责,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任逃呼,我火速辦了婚禮鳖孤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘抡笼。我一直安慰自己苏揣,他們只是感情好,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布推姻。 她就那樣靜靜地躺著平匈,像睡著了一般。 火紅的嫁衣襯著肌膚如雪藏古。 梳的紋絲不亂的頭發(fā)上增炭,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天,我揣著相機與錄音拧晕,去河邊找鬼隙姿。 笑死,一個胖子當著我的面吹牛厂捞,可吹牛的內(nèi)容都是我干的输玷。 我是一名探鬼主播队丝,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼欲鹏!你這毒婦竟也來了机久?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤赔嚎,失蹤者是張志新(化名)和其女友劉穎膘盖,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體尽狠,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡衔憨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了袄膏。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片践图。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖沉馆,靈堂內(nèi)的尸體忽然破棺而出码党,到底是詐尸還是另有隱情,我是刑警寧澤斥黑,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布揖盘,位于F島的核電站,受9級特大地震影響锌奴,放射性物質(zhì)發(fā)生泄漏兽狭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一鹿蜀、第九天 我趴在偏房一處隱蔽的房頂上張望箕慧。 院中可真熱鬧,春花似錦茴恰、人聲如沸颠焦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽伐庭。三九已至,卻和暖如春分冈,著一層夾襖步出監(jiān)牢的瞬間圾另,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工雕沉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留盯捌,地道東北人。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓蘑秽,卻偏偏與公主長得像饺著,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子肠牲,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353

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

  • git config —global user.name “Nshen” //必須git config —glob...
    困卡閱讀 368評論 1 9
  • 一幼衰、基本操作 用 git init 來在目錄中創(chuàng)建新的 Git 倉庫。 你可以在任何時候缀雳、任何目錄中這么做渡嚣,完全是...
    千山萬水迷了鹿閱讀 424評論 0 0
  • 分布式版本管理工具 git屬于分布式 svn集中式 git安裝 git初始化一個倉庫 其實就是創(chuàng)建了一個.git隱...
    SnowDragonYY閱讀 1,504評論 0 0
  • 查看分支:$ git branch 該命令會類出當先項目中的所有分支信息,其中以*開頭的表示當前所在的分支肥印。...
    Yasin27878閱讀 259評論 0 0
  • 早上醒來识椰,透過窗簾的薄紗看到天氣陰沉沉的,昨晚的霧霾還沒消失深碱。 曾經(jīng)最怕沒有星星和月亮的深夜腹鹉,黑漆漆的...
    0eac9291b341閱讀 340評論 1 3