常用git命令

Git樹是一個(gè)版本控制系統(tǒng)中的數(shù)據(jù)結(jié)構(gòu)嗤练,它記錄了項(xiàng)目的歷史變化凡桥。你可以把它想象成一棵樹喷好,樹的每個(gè)節(jié)點(diǎn)代表著一個(gè)提交梗搅,也就是項(xiàng)目的一個(gè)版本无切。每個(gè)提交都包含著對項(xiàng)目文件的一系列修改哆键,以及指向其父節(jié)點(diǎn)(上一個(gè)版本)的鏈接籍嘹。這些提交節(jié)點(diǎn)以及它們之間的鏈接形成了一個(gè)有向無環(huán)圖(DAG)辱士,我們通常把它稱為“提交樹”或“提交圖”听绳。

1.第一次初始化

  • git init: 初始化一個(gè)新的Git倉庫椅挣。
  • git add .: 將當(dāng)前目錄下的所有文件添加到暫存區(qū)鼠证。
  • git commit -m ‘first commit’: 提交暫存區(qū)中的文件到版本庫名惩,并附上提交消息為“first commit”。
  • git remote add origin git@github.com:帳號名/倉庫名.git: 添加遠(yuǎn)程倉庫稚伍,命名為origin个曙,地址為git@github.com:帳號名/倉庫名.git垦搬。
  • git pull origin master: 從遠(yuǎn)程倉庫的master分支拉取最新的更改到本地倉庫猴贰。
  • git push origin master: 將本地提交推送到遠(yuǎn)程倉庫的master分支米绕。選項(xiàng) -f 用于強(qiáng)制推送栅干。
  • git clone: 克隆一個(gè)遠(yuǎn)程倉庫到本地碱鳞。

2.工作基本操作

  • git checkout master: 切換到主分支。
  • git fetch origin: 從遠(yuǎn)程倉庫獲取最新變更填大。
  • git checkout -b dev origin/master: 基于主分支創(chuàng)建名為dev的新分支俏橘,并將其設(shè)置為跟蹤遠(yuǎn)程的master分支寥掐。
  • git add .: 將當(dāng)前目錄下的所有修改添加到暫存區(qū)百炬。
  • git commit -m ‘xxx’: 將暫存區(qū)的文件提交到本地倉庫污它,并附上提交消息為'xxx'。
  • git fetch origin: 從遠(yuǎn)程倉庫獲取最新變更歇攻。

3.初始化倉庫

git init

4.查看倉庫當(dāng)前狀態(tài)

git status

5.文件相關(guān)操作

1) 將文件添加到倉庫:
  • git add 文件名: 將工作區(qū)的某個(gè)文件添加到暫存區(qū)。
  • git add .: 將當(dāng)前工作區(qū)的所有文件都加入暫存區(qū)屡穗。
  • git add -u: 添加所有被跟蹤的文件中被修改或刪除的文件信息到暫存區(qū)村砂,不處理未跟蹤的文件箍镜。
  • git add -A: 添加所有被跟蹤的文件中被修改或刪除的文件信息到暫存區(qū),包括未跟蹤的文件手销。
  • git add -i: 進(jìn)入交互界面模式锋拖,按需添加文件到緩存區(qū)兽埃。
2)將暫存區(qū)文件提交到本地倉庫:
  • git commit -m “提交說明” 將暫存區(qū)內(nèi)容提交到本地倉庫
  • git commit -a -m “提交說明” 跳過緩存區(qū)操作柄错,直接把工作區(qū)內(nèi)容提交到本地倉庫
3)比較文件異同
  • git diff: 比較工作區(qū)與暫存區(qū)的差異售貌。
  • git diff 分支名: 比較工作區(qū)與指定分支的差異,遠(yuǎn)程分支使用remotes/origin/分支名表示恒削。
  • git diff HEAD: 比較工作區(qū)與最新提交的內(nèi)容的差異蔓同。
  • git diff 提交id 文件路徑: 比較工作區(qū)某文件當(dāng)前版本與歷史版本的差異斑粱,提交id是目標(biāo)版本的標(biāo)識则北。
  • git diff –stage: 比較工作區(qū)文件與上次提交的差異(1.6版本前用–cached)尚揣。
  • git diff 版本TAG: 比較從某個(gè)版本后的所有改動內(nèi)容娜庇。
  • git diff 分支A 分支B: 比較分支A和分支B之間的差異,也支持比較兩個(gè)TAG匕得。
  • git diff 分支A…分支B: 比較兩分支在分叉后各自的改動汁掠。

另外:如果只想統(tǒng)計(jì)哪些文件被改動,多少行被改動乞榨,可以添加 –stat 參數(shù)

6.查看歷史記錄

  • git log: 查看所有提交記錄,包括SHA-A校驗(yàn)和态秧、作者名稱愤诱、郵箱淫半、提交時(shí)間和提交說明。
  • git log -p -次數(shù): 查看最近指定次數(shù)的提交記錄对人,并顯示每次提交的詳細(xì)內(nèi)容變更。
  • git log --stat: 簡略顯示每次提交的內(nèi)容更改。
  • git log --name-only: 僅顯示已修改的文件清單咱台。
  • git log --name-status: 顯示新增表鳍、修改譬圣、刪除的文件清單维哈。
  • git log --oneline: 讓提交記錄以精簡的一行輸出。
  • git log --graph --all --oneline: 圖形展示分支的合并歷史罩润,以及所有提交記錄的一行輸出默伍。
  • git log --author=作者: 查詢指定作者的提交記錄付枫。與grep同時(shí)使用需要添加一個(gè)--all-match參數(shù)。
  • git log --grep=過濾信息: 列出提交信息中包含指定過濾信息的提交記錄衅疙。
  • git log -S查詢內(nèi)容: 列出提交記錄中引入或刪除指定內(nèi)容的提交。S和查詢內(nèi)容之間沒有空格绩郎。
  • git log fileName: 查看某文件的修改記錄潘鲫。

7.代碼回滾

  • git reset HEAD^: 將當(dāng)前HEAD指向的版本回退到上次提交的版本,但保留工作區(qū)和暫存區(qū)的修改肋杖。
  • git reset HEAD^^: 將當(dāng)前HEAD指向的版本回退到上上次提交的版本溉仑,以此類推,或者使用~后跟次數(shù)指定回退的版本數(shù)状植。
  • git reflog: 查看引用日志浊竟,即查看當(dāng)前倉庫的操作記錄,包括HEAD的變動津畸。
  • git reset --hard 版本號: 將當(dāng)前HEAD指向的版本回退到指定的版本號振定,同時(shí)重置暫存區(qū)和工作區(qū)。選項(xiàng)--soft表示只改變HEAD指針指向肉拓,不改變暫存區(qū)和工作區(qū)后频;選項(xiàng)--mixed表示修改HEAD指針指向,暫存區(qū)內(nèi)容丟失帝簇,但工作區(qū)不變徘郭;選項(xiàng)--hard表示修改HEAD指針指向靠益,暫存區(qū)內(nèi)容丟失,工作區(qū)恢復(fù)至指定版本狀態(tài)残揉。

8.版本庫相關(guān)操作

  • git rm 文件名: 從版本庫中刪除指定文件胧后,并將刪除操作添加到暫存區(qū)。
  • git rm -r --cached folder: 遞歸地刪除 folder 文件夾及其所有內(nèi)容的跟蹤記錄抱环,但不會刪除實(shí)際的文件壳快。
  • git checkout -- 文件名: 將版本庫中的文件替換工作區(qū)的文件,即撤銷對工作區(qū)文件的修改镇草,恢復(fù)到最近一次提交的狀態(tài)眶痰。

9.遠(yuǎn)程倉庫相關(guān)操作

  • 同步遠(yuǎn)程倉庫:git push -u origin master
    將本地的master分支內(nèi)容推送到遠(yuǎn)程倉庫origin,并建立本地master分支與遠(yuǎn)程master分支的關(guān)聯(lián)梯啤。

  • 本地倉庫內(nèi)容推送到遠(yuǎn)程倉庫:git remote add origin git@github.com:帳號名/倉庫名.git
    將本地倉庫關(guān)聯(lián)到遠(yuǎn)程倉庫竖伯,命名為origin,地址為git@github.com:帳號名/倉庫名.git因宇。

  • 從遠(yuǎn)程倉庫克隆項(xiàng)目到本地:git clone git@github.com:git帳號名/倉庫名.git
    從遠(yuǎn)程倉庫克隆項(xiàng)目到本地七婴。

  • 查看遠(yuǎn)程庫信息:git remote
    查看當(dāng)前倉庫配置的遠(yuǎn)程倉庫信息。

  • 拉取遠(yuǎn)程分支到本地倉庫:

    git checkout -b 本地分支 遠(yuǎn)程分支 # 會在本地新建分支察滑,并自動切換到該分支
    git fetch origin 遠(yuǎn)程分支:本地分支 # 會在本地新建分支打厘,但不會自動切換,還需checkout
    git branch --set-upstream 本地分支 遠(yuǎn)程分支 # 建立本地分支與遠(yuǎn)程分支的鏈接
    
  • 同步遠(yuǎn)程倉庫更新:git fetch origin master
    從遠(yuǎn)程倉庫origin的master分支獲取最新變更贺辰,但不合并到當(dāng)前分支户盯。

10.分支相關(guān)操作

  • git checkout -b dev: 創(chuàng)建并切換到名為dev的新分支。
  • git branch dev: 創(chuàng)建名為dev的新分支饲化,但不切換到該分支莽鸭。
  • git checkout dev: 切換到名為dev的分支。
  • git branch: 查看所有分支滓侍。
合并分支:
  • git merge dev: 將名為dev的分支合并到當(dāng)前分支蒋川。這種合并會產(chǎn)生一個(gè)新的合并提交牲芋,并且合并后的歷史記錄會顯示分支的合并情況撩笆。
  • git merge --no-ff -m “merge with no-ff” dev: 使用普通模式合并名為dev的分支到當(dāng)前分支。選項(xiàng)--no-ff表示禁用快速合并(Fast-forward)缸浦,這樣合并后的歷史記錄中會保留分支的信息夕冲,能夠清晰地看出曾經(jīng)進(jìn)行過合并。
刪除分支:

git branch -d dev

查看分支合并圖:

git log –graph –pretty=oneline –abbrev-commit

11.git相關(guān)配置

安裝完Git后第一件要做的事裂逐,設(shè)置用戶信息(global可換成local在單獨(dú)項(xiàng)目生效):

  • git config --global user.name “用戶名”: 設(shè)置全局Git用戶名為“用戶名”歹鱼。
  • git config --global user.email “用戶郵箱”: 設(shè)置全局Git用戶郵箱為“用戶郵箱”。
  • git config --global user.name: 查看全局Git用戶名是否配置成功卜高。
  • git config --global user.email: 查看全局Git用戶郵箱是否配置成功弥姻。

其他配置相關(guān):

  • git config --global --list: 查看全局設(shè)置相關(guān)參數(shù)列表南片。
  • git config --local --list: 查看本地設(shè)置相關(guān)參數(shù)列表。
  • git config --system --list: 查看系統(tǒng)配置參數(shù)列表庭敦。
  • git config --list: 查看所有Git的配置疼进,包括全局、本地和系統(tǒng)級別的配置秧廉。
  • git config --global color.ui true: 設(shè)置全局Git顏色顯示為true伞广,即啟用Git相關(guān)顏色顯示。

13.撤消某次提交

  • git revert HEAD: 撤銷最近的一個(gè)提交疼电,并創(chuàng)建一個(gè)新的提交來反轉(zhuǎn)該提交引入的更改嚼锄。
  • git revert 版本號: 撤銷指定版本號的提交,并創(chuàng)建一個(gè)新的提交來反轉(zhuǎn)該提交引入的更改蔽豺。

14.標(biāo)簽

  • git tag 標(biāo)簽: 在當(dāng)前HEAD指向的提交上打上標(biāo)簽区丑。
  • git tag: 顯示所有標(biāo)簽。
  • git tag 標(biāo)簽 版本號: 給指定的commit版本添加標(biāo)簽修陡。
  • git show 標(biāo)簽: 顯示指定標(biāo)簽的詳細(xì)信息刊苍。

15.clean

  • git clean: 命令可以用來刪除當(dāng)前目錄下沒有被 Git 管理的文件,包括編譯生成的文件濒析、臨時(shí)文件等不需要的文件正什,提高代碼倉庫的整潔性。命令默認(rèn)不會刪除目錄号杏,只會刪除文件婴氮。如果要?jiǎng)h除目錄,需要加上 -d 參數(shù)盾致。
    -git clean -n: 查看刪除文件列表
    -git clean -f -x: 命令來強(qiáng)制刪除主经。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市庭惜,隨后出現(xiàn)的幾起案子罩驻,更是在濱河造成了極大的恐慌,老刑警劉巖护赊,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件惠遏,死亡現(xiàn)場離奇詭異,居然都是意外死亡骏啰,警方通過查閱死者的電腦和手機(jī)节吮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來判耕,“玉大人透绩,你說我怎么就攤上這事。” “怎么了帚豪?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵碳竟,是天一觀的道長。 經(jīng)常有香客問我狸臣,道長瞭亮,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任固棚,我火速辦了婚禮统翩,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘此洲。我一直安慰自己厂汗,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布呜师。 她就那樣靜靜地躺著娶桦,像睡著了一般。 火紅的嫁衣襯著肌膚如雪汁汗。 梳的紋絲不亂的頭發(fā)上衷畦,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天,我揣著相機(jī)與錄音知牌,去河邊找鬼祈争。 笑死,一個(gè)胖子當(dāng)著我的面吹牛角寸,可吹牛的內(nèi)容都是我干的菩混。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼扁藕,長吁一口氣:“原來是場噩夢啊……” “哼沮峡!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起亿柑,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤邢疙,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后望薄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體疟游,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年式矫,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了乡摹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,040評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡采转,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情故慈,我是刑警寧澤板熊,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站察绷,受9級特大地震影響干签,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜拆撼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一容劳、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧闸度,春花似錦竭贩、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至哟冬,卻和暖如春楼熄,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背浩峡。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工可岂, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人翰灾。 一個(gè)月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓青柄,卻偏偏與公主長得像,于是被迫代替她去往敵國和親预侯。 傳聞我的和親對象是個(gè)殘疾皇子致开,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評論 2 355

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

  • 文件說明 Git開發(fā)常用命令,是在 hongiii 的基礎(chǔ)上在進(jìn)行補(bǔ)充 Git介紹 Git是分布式版本控制系統(tǒng) 集...
    微光北下閱讀 251評論 0 0
  • 一般來說萎馅,日常使用只要記住下圖6個(gè)命令双戳,就可以了。但是熟練使用糜芳,恐怕要記住60~100個(gè)命令飒货。 下面是我整理的常用...
    f09037cb27f7閱讀 114評論 0 0
  • 閱讀 2907收藏 171原文 www.ruanyifeng.com 我每天使用 Git ,但是很多命令記不住峭竣。 ...
    我家有個(gè)小太陽閱讀 193評論 0 0
  • 總結(jié) git的幾個(gè)常用詞匯 Workspace:工作區(qū) Index / Stage:暫存區(qū) Repository:...
    Predor閱讀 242評論 0 0
  • 生成SSH key在Windows下查看[c盤->用戶->自己的用戶名->.ssh]下是否有id_rsa塘辅、id_r...
    上杉丶零閱讀 189評論 0 1