Git常用指令

以前喜歡用GUI來(lái)管理代碼榴嗅,輕松簡(jiǎn)單,但遇到各種棘手的問(wèn)題時(shí)覺(jué)得還是終端好用陶舞。尤其是在Iterm + Zsh + agnoster + Solarized Dark下嗽测,簡(jiǎn)直想用他來(lái)寫日常代碼...
給張效果圖:

終端.png

下面介紹一些常用的:

Gits復(fù)原

改動(dòng)代碼不小心出現(xiàn)了難以解決的bug,或者做了大量無(wú)用改動(dòng)想要放棄時(shí)可以使用

git reset --hard 

回復(fù)到?jīng)]修改的狀態(tài)肿孵。

Git 新增檔案

git add .

將資料先暫存到 staging area, add 之后再新增的資料, 于此次 commit 不會(huì)含在里面论咏。

git add filename
git add modify-file

修改過(guò)的檔案, 也要 add. (不然 commit 要加上 -a 的參數(shù))

git add -u # 只加修改過(guò)的檔案, 新增的檔案不加入.
git add -i # 進(jìn)入互動(dòng)模式Git 刪除檔案

git rm filenameGit 修改檔名、搬移目錄
git mv filename new-filename

Git status 看目前的狀態(tài)

git status # 看目前檔案的狀態(tài)

Git 提交

git commit
git commit -m 'commit message'
git commit -a -m 'commit -message' # 將所有修改過(guò)得檔案都 commit, 但是 新增的檔案 還是得要先 add.
git commit -a -v # -v 可以看到檔案哪些內(nèi)容有被更改, -a 把所有修改的檔案都 commit

Git 產(chǎn)生新的 branch

git branch # 列出目前有多少 branchgit branch new-branch # 產(chǎn)生新的 branch (名稱: new-branch), 若沒(méi)有特別指定, 會(huì)由目前所在的 branch / master 直接復(fù)制一份.
git branch new-branch master # 由 master 產(chǎn)生新的 branch(new-branch)
git branch new-branch v1 # 由 tag(v1) 產(chǎn)生新的 branch(new-branch)
git branch -d new-branch # 刪除 new-branch
git branch -D new-branch # 強(qiáng)制刪除 new-branch
git checkout -b new-branch test # 產(chǎn)生新的 branch, 并同時(shí)切換過(guò)去 new-branch

與 remote repository 有關(guān)

git branch -r # 列出所有 Repository branch
git branch -a # 列出所有 branch

Git checkout 切換 branch

git checkout branch-name # 切換到 branch-name
git checkout master # 切換到 master
git checkout -b new-branch master # 從 master 建立新的 new-branch, 并同時(shí)切換過(guò)去 new-branch
git checkout -b newbranch # 由現(xiàn)在的環(huán)境為基礎(chǔ), 建立新的 branch
git checkout -b newbranch origin # 于 origin 的基礎(chǔ), 建立新的 branch
git checkout filename # 還原檔案到 Repository 狀態(tài)
git checkout HEAD . # 將所有檔案都 checkout 出來(lái)(最后一次 commit 的版本), 注意, 若有修改的檔案都會(huì)被還原到上一版. (git checkout -f 亦可)
git checkout xxxx . # 將所有檔案都 checkout 出來(lái)(xxxx commit 的版本, xxxx 是 commit 的編號(hào)前四碼), 注意, 若有修改的檔案都會(huì)被還原到上一版.
git checkout -- * # 恢復(fù)到上一次 Commit 的狀態(tài)(* 改成檔名, 就可以只恢復(fù)那個(gè)檔案)

初次使用可能提示需要完善配置信息:

   git config --global user.name "Your Name Comes Here" //配置使用git倉(cāng)庫(kù)的人員姓名
   git config --global user.email you@yourdomain.example.com //配置使用git倉(cāng)庫(kù)的人員email 

Git diff

git diff master # 與 Master 有哪些資料不同
git diff --cached # 比較 staging area 跟本來(lái)的 Repository
git diff tag1 tag2 # tag1, 與 tag2 的 diff
git diff tag1:file1 tag2:file2 # tag1, 與 tag2 的 file1, file2 的 diff
git diff # 比較 目前位置 與 staging area
git diff --cached # 比較 staging area 與 Repository 差異
git diff HEAD # 比較目前位置 與 Repository 差別
git diff new-branch # 比較目前位置 與 branch(new-branch) 的差別
git diff --stat

Git Tag

git tag v1 ebff
git tag 中文 ebff # tag 也可以下中文, 任何文字都可以
git tag -d 中文 # 把 tag=中文 刪掉

Git log

git log # 將所有 log 秀出
git log --all # 秀出所有的 log (含 branch)
git log -p # 將所有 log 和修改過(guò)得檔案內(nèi)容列出           
git log -p filename # 將此檔案的 commit log 和 修改檔案內(nèi)容差異部份列出
git log --name-only # 列出此次 log 有哪些檔案被修改
git log --stat --summary # 查每個(gè)版本間的更動(dòng)檔案和行數(shù)
git log filename # 這個(gè)檔案的所有 log
git log directory # 這個(gè)目錄的所有 log
git log -S'sso()' # log 里面有 sso() 這字串的.
git log --no-merges # 不要秀出 merge 的 log
git log --since="2 weeks ago" # 最后這 2周的 log
git log --pretty=oneline # 秀 log 的方式
git log --pretty=short # 秀 log 的方式git log --pretty=format:'%h was %an, %ar, message: %s'
git log --pretty=format:'%h : %s' --graph # 會(huì)有簡(jiǎn)單的文字圖形化, 分支等.
git log --pretty=format:'%h : %s' --topo-order --graph # 依照主分支排序
git log --pretty=format:'%h : %s' --date-order --graph # 依照時(shí)間排序

Git show

git show ebff # 查 log 是 commit ebff810c461ad1924fc422fd1d01db23d858773b 的內(nèi)容
git show v1 # 查 tag:v1 的修改內(nèi)容
git show v1:test.txt # 查 tag:v1 的 test.txt 檔案修改內(nèi)容
git show HEAD # 此版本修改的資料
git show HEAD^ # 前一版修改的資料git show HEAD^^ # 前前一版修改的資料    
git show HEAD~4 # 前前前前一版修改的資料

Git reset 還原

git reset --hard HEAD # 還原到最前面
git reset --hard HEAD~3
git reset --soft HEAD~3
git reset HEAD filename # 從 staging area 狀態(tài)回到 unstaging 或 untracked (檔案內(nèi)容并不會(huì)改變)

Git grep

git grep "te" v1 # 查 v1 是否有 "te" 的字串
git grep "te" # 查現(xiàn)在版本是否有 "te" 的字串

Git stash 暫存

git stash # 丟進(jìn)暫存區(qū)
git stash list # 列出所有暫存區(qū)的資料
git stash pop # 取出最新的一筆, 并移除.
git stash apply # 取出最新的一筆 stash 暫存資料. 但是 stash 資料不移除
git stash clear # 把 stash 都清掉

Git merge 合并

git merge
git merge master
git merge new-branch
git merge # 合并另一個(gè) branch颁井,若沒(méi)有 conflict 沖突會(huì)直接 commit厅贪。若需要解決沖突則會(huì)再多一個(gè) commit。
git merge --squash # 將另一個(gè) branch 的 commit 合并為一筆雅宾,特別適合需要做實(shí)驗(yàn)的 fixes bug 或 new feature养涮,最后只留結(jié)果葵硕。合并完不會(huì)幫你先 commit。
git cherry-pick 321d76f # 只合并特定其中一個(gè) commit贯吓。如果要合并多個(gè)懈凹,可以加上 -n 指令就不會(huì)先幫你 commit,這樣可以多 pick幾個(gè)要合并的 commit悄谐,最后再 git commit 即可介评。

Git blame

git blame filename # 關(guān)于此檔案的所有 commit 紀(jì)錄

Git 還原已被刪除的檔案

git ls-files -d # 查看已刪除的檔案
git ls-files -d | xargs git checkout -- # 將已刪除的檔案還原

Git 維護(hù)

git gc # 整理前和整理后的差異, 可由: git count-objects 看到.
git fsck --fullGit revert 資料還原
git revert HEAD # 回到前一次 commit 的狀態(tài)
git revert HEAD^ # 回到前前一次 commit 的狀態(tài)
git reset HEAD filename # 從 staging area 狀態(tài)回到 unstaging 或 untracked (檔案內(nèi)容并不會(huì)改變)
git checkout filename # 從 unstaging 狀態(tài)回到最初 Repository 的檔案(檔案內(nèi)容變回修改前)
git Rollback 還原到上一版

Git remote 維護(hù)遠(yuǎn)端檔案

git remote
git remote add new-branch [http://git.example.com.tw/project.git](http://git.example.com.tw/project.git) # 增加遠(yuǎn)端 Repository 的 branch(origin -> project)
git remote show # 秀出現(xiàn)在有多少 Repository
git remote rm new-branch # 刪掉
git remote update # 更新所有 Repository branch
git branch -r # 列出所有 Repository branch抓取 / 切換 Repository 的 branch
git fetch origin
git checkout --track -b reps-branch origin/reps-branch # 抓取 reps-branch, 并將此 branch 建立于 local 的 reps-branch刪除 Repository 的 branch
git push origin :heads/reps-branch
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市爬舰,隨后出現(xiàn)的幾起案子们陆,更是在濱河造成了極大的恐慌,老刑警劉巖情屹,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件坪仇,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡垃你,警方通過(guò)查閱死者的電腦和手機(jī)椅文,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)惜颇,“玉大人皆刺,你說(shuō)我怎么就攤上這事×枭悖” “怎么了羡蛾?”我有些...
    開(kāi)封第一講書人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)望伦。 經(jīng)常有香客問(wèn)我,道長(zhǎng)煎殷,這世上最難降的妖魔是什么屯伞? 我笑而不...
    開(kāi)封第一講書人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮豪直,結(jié)果婚禮上劣摇,老公的妹妹穿的比我還像新娘。我一直安慰自己弓乙,他們只是感情好末融,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著暇韧,像睡著了一般勾习。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上懈玻,一...
    開(kāi)封第一講書人閱讀 51,482評(píng)論 1 302
  • 那天巧婶,我揣著相機(jī)與錄音,去河邊找鬼。 笑死艺栈,一個(gè)胖子當(dāng)著我的面吹牛英岭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播湿右,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼诅妹,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了毅人?” 一聲冷哼從身側(cè)響起吭狡,我...
    開(kāi)封第一講書人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎堰塌,沒(méi)想到半個(gè)月后赵刑,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡场刑,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年般此,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片牵现。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡铐懊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出瞎疼,到底是詐尸還是另有隱情科乎,我是刑警寧澤,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布贼急,位于F島的核電站茅茂,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏太抓。R本人自食惡果不足惜空闲,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望走敌。 院中可真熱鬧碴倾,春花似錦、人聲如沸掉丽。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)捶障。三九已至僧须,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間项炼,已是汗流浹背皆辽。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工柑蛇, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人驱闷。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓耻台,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親空另。 傳聞我的和親對(duì)象是個(gè)殘疾皇子盆耽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

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

  • Git常用命令總結(jié) Git常用命令總結(jié) git init 在本地新建一個(gè)repo,進(jìn)入一個(gè)項(xiàng)目目錄,執(zhí)行g(shù)it i...
    猿ape閱讀 236評(píng)論 0 1
  • 1) 遠(yuǎn)程倉(cāng)庫(kù)相關(guān)命令 檢出倉(cāng)庫(kù): 檢出倉(cāng)庫(kù): 直接檢出分支 2.0.0,指定遠(yuǎn)程倉(cāng)庫(kù)名稱為 github (默認(rèn)...
    gavinDu閱讀 387評(píng)論 0 0
  • 由于git的使用通常伴隨著linux的常用指令扼菠,因此下面記得也有l(wèi)inux常用的操作摄杂,如果學(xué)習(xí)git確實(shí)應(yīng)該也學(xué)習(xí)...
    fwfaef閱讀 249評(píng)論 0 0
  • 今天一個(gè)同學(xué)說(shuō),她發(fā)朋友圈的練習(xí)循榆,有人喜歡析恢,向她索要,問(wèn)大家怎么辦秧饮? 老師說(shuō)映挂,如果關(guān)系好,他要你就送吧盗尸。 我說(shuō)柑船,你...
    金明啊閱讀 211評(píng)論 0 0
  • 貝拉是無(wú)意之間闖進(jìn)院子后面那個(gè)小花園的,在那里泼各,她認(rèn)識(shí)了一只大白熊鞍时,更神奇的是,這只大白熊還會(huì)說(shuō)話扣蜻。 貝拉不知道大...
    丑橘閱讀 423評(píng)論 0 0