Git常用命令清單

目錄

之前一直借助于 Source-tree 這種圖形化 Git 工具甚牲,一次在幫同事解決 Git 分支合并問(wèn)題時(shí),用的同事電腦,沒(méi)有 Source-tree 牧抽,感覺(jué)完全不會(huì)用了,什么命令也沒(méi)記住遥赚。惡補(bǔ)一下命令扬舒,重新學(xué)一遍 Git 教程,發(fā)現(xiàn)好多常用的操作凫佛,用命令還是非常方便的讲坎。
這里整理匯總下:

一、Git alias

在開(kāi)始常用命令前愧薛,先推薦下使用 alias 定義 git 常用命令的別名晨炕,合理使用簡(jiǎn)寫(xiě)可以大幅提高效率。

常用 git 命令厚满,可以在 ~/.gitconfig 文件中使用 alias 定義簡(jiǎn)寫(xiě)府瞄,以下是我個(gè)人常用 alias:

[alias]
    st = status -s
    ci = commit
    l  = log --oneline --decorate -12 --color
    ll = log --oneline --decorate --color
    lc = log --graph --color
    co = checkout
    br = branch
    ba = branch -a
    rb = rebase
    dci = dcommit
    lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit

另,~/.gitconfig 文件中,可以查看當(dāng)前 user 的 git 配置信息

二遵馆、branch 分支操作

查看分支信息


# 列出所有本地分支
// git br
$ git branch

# 列出所有本地分支和遠(yuǎn)程分支
// git ba
$ git branch -a

新建分支

# 從當(dāng)前分支新建一個(gè)分支鲸郊。但依然停留在當(dāng)前分支 
// git br [本地xxx]
$ git branch [branch-name]
// 常用于:對(duì)當(dāng)前 分支做個(gè)備份

# 從指定的遠(yuǎn)程分支,拉一個(gè)本地分支货邓。并切換到該分支
// 常用于: 從遠(yuǎn)端 develop 拉一個(gè) 本地 feature/xxx 分支
$ git checkout -b newBrach origin/master

# 新建一個(gè)分支秆撮,指向指定commit。但依然停留在當(dāng)前分支 
$ git branch [branch] [commit]

# 新建一個(gè)分支换况。并切換到該分支
// git co -b [local or remote/branch-name]
$ git checkout -b [branch-name]

# 新建一個(gè)分支职辨,指向某個(gè)tag
$ git checkout -b [branch] [tag]

切換分支

# 切換到指定分支,并更新工作區(qū)
// git co [branch-name]
$ git checkout [branch-name]

# 切換到上一個(gè)分支
$ git checkout -

刪除分支

# 刪除本地分支
// git br -d [branch-name]]
$ git branch -d [branch-name]
$ git branch -D //強(qiáng)制刪除

# 刪除遠(yuǎn)程分支
// git br -dr [remote/branch]
// eg:  git br -dr origin/xxx_name
$ git branch -dr [remote/branch]

合并分支

# 合并指定分支到當(dāng)前分支
$ git merge [branch]

# 選擇一個(gè)commit戈二,合并進(jìn)當(dāng)前分支
$ git cherry-pick [commit]

三舒裤、tag 分支操作

在 Git 中 tag 可以看做是指向某個(gè) commit 的特殊分支

列顯已有 tag

$ git tag

添加 tag

$ git tag v1.4.0

// 添加一個(gè)帶 commit log 的 tag
$ git tag -a v1.4 -m 'my version 1.4'

// 為某個(gè)指定的 commit 打上 tag
$ git tag -a v1.2 9fceb02

// 查看 tag 信息
$ git show v1.4

推送 tag

// git push 不會(huì)將本地的 tag push 到 origin

# push 指定 tag name
$ git push origin v1.0
# push 全部 tag
$ git push origin --tags

刪除 tag

// 刪除本地 tag
$ git tag -d v0.9

// 刪除遠(yuǎn)端 tag
$ git push origin :refs/tags/0.1.0
## 明確的表示刪除
$ git push --delete origin v1.1

四、git pull

git pull命令的作用是觉吭,取回遠(yuǎn)程主機(jī)某個(gè)分支的更新腾供,再與本地的指定分支合并。

Merge 型 的 pull

如果本地分支鲜滩,在 checkout 后伴鳖,有 commit, git pull 就會(huì)增加一個(gè) Merge log
如果本地分支沒(méi)有 新 commit徙硅,等于直接 fetch榜聂、pull


// 將遠(yuǎn)端的 A 分支的代碼,拉到本地 B 分支 (會(huì)產(chǎn)生一個(gè) Merge log)
$ git pull origin [remote_name]:[local_name]
// 如果是往當(dāng)前 本地分支 pull嗓蘑,則冒號(hào)后面的部分可以省略
$ git pull origin [remote_name]


// 實(shí)質(zhì)上须肆,這等同于先做git fetch,再做git merge桩皿。
$ git fetch origin
$ git merge origin/next

# Git會(huì)自動(dòng)在本地分支與遠(yuǎn)程分支之間休吠,建立一種追蹤關(guān)系(tracking)。 就是說(shuō)业簿,本地的master分支自動(dòng)"追蹤"origin/master分支。

// 如果當(dāng)前分支與遠(yuǎn)程分支存在追蹤關(guān)系阳懂,git pull就可以省略遠(yuǎn)程分支名梅尤。
$ git pull origin

// 如果當(dāng)前分支只有一個(gè)追蹤分支,連遠(yuǎn)程主機(jī)名都可以省略岩调。
$ git pull
// 上面命令表示巷燥,當(dāng)前分支自動(dòng)與唯一一個(gè)追蹤分支進(jìn)行合并

rebase 型 pull


// 如果合并需要采用rebase模式,可以使用--rebase選項(xiàng)号枕。
$ git pull --rebase <遠(yuǎn)程主機(jī)名> <遠(yuǎn)程分支名>:<本地分支名>
// git pull --rebase origin [origin_name]:[local_name]

// 如果是 rebase 到當(dāng)前分支缰揪,可省略 : 后
$ git pull --rebase origin [origin_name]
// 如果 rebase 的遠(yuǎn)端分支,是當(dāng)前分支 track 的,[origin_name] 可省略
$ git pull --rebase origin 

五钝腺、Git push

// 將當(dāng)前 loca_name 分支 push 到遠(yuǎn)端抛姑,命名為 new_name
$ git push <遠(yuǎn)程主機(jī)名> <本地分支名>:<遠(yuǎn)程分支名>
// git push origin loca_name:new_name

# 如果當(dāng)前分支與遠(yuǎn)程分支之間存在追蹤關(guān)系,則本地分支和遠(yuǎn)程分支都可以省略艳狐。
# 如果當(dāng)前分支只有一個(gè)追蹤分支定硝,那么主機(jī)名都可以省略。
// 會(huì)將本地所有分支都 對(duì)應(yīng) push (慎用)
$ git push

// push 可以用來(lái)刪除
$ git push origin --delete master

# 如果遠(yuǎn)程主機(jī)的版本比本地版本更新毫目,推送時(shí)Git會(huì)報(bào)錯(cuò)蔬啡,要求先在本地做git pull合并差異,然后再推送到遠(yuǎn)程主機(jī)镀虐。這時(shí)箱蟆,如果你一定要推送,可以使用--force選項(xiàng)刮便。
$ git push --force origin 

# 最后空猜,git push不會(huì)推送標(biāo)簽(tag),除非使用--tags選項(xiàng)诺核。
$ git push origin --tags

六抄肖、代碼回滾

快速合并緩存區(qū)到上一個(gè) commit

// 將 add 到緩存區(qū)的內(nèi)容,和上一個(gè) commit 一起窖杀, rebase 成了一個(gè)新的 commit
$ git commit --amend

// 便于將漏修改的漓摩,或是修改錯(cuò)誤的內(nèi)容,合并到上一個(gè) commit 中入客。而不用提交兩個(gè) commit管毙,然后 rebase 成一個(gè)
// 注:如果修改過(guò)了, 只能 push -f 到遠(yuǎn)端

checkout 到指定 commit

這對(duì)于快速查看項(xiàng)目舊版本來(lái)說(shuō)非常有用

$ git checkout [commit id]

// check 到往前指定此的 commit
$ git checkout HEAD~2 

git Revert

Revert撤銷(xiāo)一個(gè)提交的同時(shí)會(huì)創(chuàng)建一個(gè)新的提交桌硫。

# 新建一個(gè)commit夭咬,用來(lái)撤銷(xiāo)指定commit
# 后者的所有變化都將被前者抵消,并且應(yīng)用到當(dāng)前分支
$ git revert [commit]

git reset

  • 將已經(jīng)加到緩存區(qū)的內(nèi)容(僅打了本地 commit)铆隘,移除到工作區(qū)
$ git reset HEAD

$ git reset HEAD~2
  • 從緩存區(qū)重置卓舵,不刪除修改的地方
// 將緩存區(qū)中的指定文件,移到工作區(qū)
// 緩存區(qū)中的膀钠,指的是 add 后的
git reset <file>

// 將緩存區(qū)中的全部文件掏湾,移到工作區(qū)
$ git reset

// 將本地 commit 歷史中的 commit 移除到 工作區(qū) (未 add 狀態(tài))
$ git reset [commit_id]

刪除式 reset

// 緩存區(qū)和工作區(qū)的,都會(huì)被完全移除(刪除)
$ git reset --hard

// 將本地 commit 歷史中的直接刪除
$ git reset --hard <commit>

# 重置當(dāng)前HEAD為指定commit肿嘲,但保持暫存區(qū)和工作區(qū)不變
$ git reset --keep [commit]

參考:
常用 Git 命令清單 - 阮一峰
Git遠(yuǎn)程操作詳解 - 阮一峰
Git 配置別名 - 廖雪峰
果殼中的 Git

特別推薦:
jaywcjlove —— Git常用命令清單

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末融击,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子雳窟,更是在濱河造成了極大的恐慌尊浪,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異拇涤,居然都是意外死亡捣作,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén)工育,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)虾宇,“玉大人,你說(shuō)我怎么就攤上這事如绸≈鲂啵” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵怔接,是天一觀(guān)的道長(zhǎng)搪泳。 經(jīng)常有香客問(wèn)我,道長(zhǎng)扼脐,這世上最難降的妖魔是什么岸军? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮瓦侮,結(jié)果婚禮上艰赞,老公的妹妹穿的比我還像新娘。我一直安慰自己肚吏,他們只是感情好方妖,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著罚攀,像睡著了一般党觅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上斋泄,一...
    開(kāi)封第一講書(shū)人閱讀 49,185評(píng)論 1 284
  • 那天杯瞻,我揣著相機(jī)與錄音,去河邊找鬼炫掐。 笑死魁莉,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的募胃。 我是一名探鬼主播沛厨,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼摔认!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起宅粥,我...
    開(kāi)封第一講書(shū)人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤参袱,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體抹蚀,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡剿牺,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了环壤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片晒来。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖郑现,靈堂內(nèi)的尸體忽然破棺而出湃崩,到底是詐尸還是另有隱情,我是刑警寧澤接箫,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布攒读,位于F島的核電站,受9級(jí)特大地震影響辛友,放射性物質(zhì)發(fā)生泄漏薄扁。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一废累、第九天 我趴在偏房一處隱蔽的房頂上張望邓梅。 院中可真熱鬧,春花似錦邑滨、人聲如沸日缨。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)殿遂。三九已至,卻和暖如春乙各,著一層夾襖步出監(jiān)牢的瞬間墨礁,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工耳峦, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留恩静,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓蹲坷,卻偏偏與公主長(zhǎng)得像驶乾,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子循签,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

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

  • 一般來(lái)說(shuō)级乐,日常使用只要記住下圖6個(gè)命令,就可以了县匠。但是熟練使用风科,恐怕要記住60~100個(gè)命令撒轮。 下面是一些常用Gi...
    tiandashu閱讀 240評(píng)論 0 0
  • Git常用命令清單一、新建代碼庫(kù) 在當(dāng)前目錄新建一個(gè)Git代碼庫(kù) $ git init 新建一個(gè)目錄贼穆,將其初始化為...
    大飛哥閱讀 257評(píng)論 0 0
  • 這里是我的筆記题山,記錄一些git常用和一些記不住的命令,這個(gè)筆記原本是基于 顏海鏡的文章增加的故痊,后面慢慢增加了許多內(nèi)...
    Lefter閱讀 481評(píng)論 0 3
  • “ 我們總在最不懂愛(ài)情的年齡顶瞳,遇見(jiàn)了最美的愛(ài)情!卻在錯(cuò)過(guò)最好的年華愕秫,邂逅最美的期待慨菱! ” 1、太多的自以為豫领,斷送了...
    初月皎皎閱讀 323評(píng)論 0 1
  • 昨天早上抡柿,媽媽的老年旅游團(tuán)開(kāi)拔了 當(dāng)天晚上到達(dá)北京 今天開(kāi)始征途 傍晚看著媽媽上傳的圖片 心中一片感慨…… 媽媽?zhuān)?..
    夏夏榆莢閱讀 539評(píng)論 0 0