Git常用指令

Git工作目錄主要分為:

1.工作區(qū) (git add ↓)
2.暫存區(qū) (git commit ↓)
3.對(duì)象庫


Git文件狀態(tài)

1.Git文件
已被版本庫管理的文件舞竿。
2.已修改
在工作目錄修改git文件
3.已暫存
對(duì)已修改的文件執(zhí)行Git暫存操作京景,將文件存入暫存區(qū)。
4.已提交
將已暫存的文件執(zhí)行Git操作骗奖,將文件存入版本庫中确徙。


Git文件狀態(tài)

Git常用命令

1 git init :

初始化一個(gè)版本庫。

2 git init --bare

創(chuàng)建一個(gè)裸庫执桌,沒有工作區(qū)鄙皇。主要用來存放存放。

3 git add <file>

可以將一個(gè)未被追蹤的文件(untracked)添加到版本庫的暫存區(qū)當(dāng)中(tracked)仰挣。

4 git status

查看版本庫狀態(tài)伴逸。

5 git rm --cached <file>

將文件從暫存區(qū)中移除”旌回退到已修改的狀態(tài)错蝴。不會(huì)丟棄內(nèi)容

6 git commit 或者 git commit -m "xxxxx"

將暫存區(qū)的文件添加到對(duì)象庫中。

7 git commit --amend -m 'xxxxxx'

替換掉上次提交commit的消息颓芭。

8 git config --global

配置全局信息顷锰。

9 git config --local

針對(duì)于特定的項(xiàng)目。

10 git checkout -- <file>

丟棄掉相對(duì)于暫存區(qū)中最后一次添加的文件內(nèi)容所做的變更亡问。
丟棄工作目錄當(dāng)中的修改官紫。(沒有執(zhí)行g(shù)it add前的所有操作)

11 git rm <file>

從對(duì)象庫刪除git中的文件,同時(shí)也會(huì)刪除本地文件玛界。(必須是commit的)
1.刪除了一個(gè)文件万矾。
2.將被刪除的文件納入到暫存區(qū)。

12 git checkout -- <file>

撤銷對(duì)工作區(qū)修改慎框;這個(gè)命令是以最新的存儲(chǔ)時(shí)間節(jié)點(diǎn)(add和commit)為參照良狈,覆蓋工作區(qū)對(duì)應(yīng)文件file;這個(gè)命令改變的是工作區(qū)

13 git reset HEAD -- <file>

清空add命令向暫存區(qū)提交的關(guān)于file文件的修改(Ustage)笨枯;這個(gè)命令僅改變暫存區(qū)薪丁,并不改變工作區(qū),這意味著在無任何其他操作的情況下馅精,工作區(qū)中的實(shí)際文件同該命令運(yùn)行之前無任何改變

14 git mv <source file> <target file>

重命名或者將文件進(jìn)行移動(dòng)严嗜。
實(shí)際是分為兩個(gè)步驟。創(chuàng)建一個(gè)新文件洲敢,并刪除舊文件漫玄。

15 git log 或者 git log -n(顯示最近n次更新)

查看提交歷史。


查看歷史提交

15.1 git log -p filename

查看指定文件的提交歷史

15.2 git log --author="A|B"

根據(jù)作者名稱查找的提交歷史

15.3 git log --grep="關(guān)鍵字"

根據(jù)關(guān)鍵字查找的提交歷史

15.4 git log -- a.txt

根據(jù)文件名查找的提交歷史

15.5 git log 分支名

查看別的分支的提交記錄
git log origin/master
git log remotes/origin/master
git log refs/remotes/origin/master
查看遠(yuǎn)程分支的提交記錄。
前兩種最終都會(huì)轉(zhuǎn)換為第三種進(jìn)行調(diào)用睦优。

15.6 git log origin/master A

查看遠(yuǎn)程分支下 A 的提交記錄(A可以是文件渗常,也可以是目錄)

16 git branch 或者 git branch -a

查看當(dāng)前版本庫中所有的分支

17 git branch new_branch

在當(dāng)前分支的基礎(chǔ)上創(chuàng)建新分支。

18 git checkout branch

切換分支汗盘。

19 git checkout -b new_branch

創(chuàng)建新分支并切換到新分支上皱碘。

20 git checkout -b [local_branch_name] origin/new_branch

從遠(yuǎn)程分支獲取到本地。origin/new_branch遠(yuǎn)程分支與遠(yuǎn)程服務(wù)器上的分支是相對(duì)應(yīng)的隐孽。

21 git branhch -d branch_name

刪除分支癌椿。(如果要?jiǎng)h除的分支與當(dāng)前分支的內(nèi)容沒有合并,不允許刪除菱阵。)

22 git branch -D branch_name

強(qiáng)制刪除分支踢俄。

23 git merge branch_name

將branch_name 分支上的修改合并到當(dāng)前的分支中。

FastForward

commit對(duì)象鏈
image.png

1.HEAD 指向的是當(dāng)前的分支送粱。
2.master(分支名)指向的是提交褪贵。

創(chuàng)建dev分支
修改dev分支
將dev分支合并master分支

24 解決沖突

修改代碼后,需要調(diào)用 git add <file> 標(biāo)記為已經(jīng)解決沖突抗俄。
再執(zhí)行g(shù)it commit 標(biāo)識(shí)merge完成脆丁。

分支合并

25. git merge -- no-ff branch_name

合并分支不適用FastForward,這樣會(huì)多出一個(gè)commitId动雹。

26 git reset --hard HEAD^^

或者 git reset --hard HEAD~2

或者 git reset --hard commit_id.

回退到某個(gè)版本槽卫。

27 git reflog

查看git操作記錄

28 git reset HEAD <file>

將之前添加到暫存區(qū)的內(nèi)容從暫存區(qū)移除到工作區(qū)。

29 git branch -m old_branch_name new_branch_name

修改分支名稱

30 git stash 或者 git stash save 'xxx'

將工作目錄的記錄進(jìn)行臨時(shí)保存胰蝠。

31 git stash list

查看臨時(shí)保存的列表歼培。

32 git stash pop

恢復(fù)臨時(shí)保存的信息。并刪除掉記錄茸塞。

33 git stash apply

恢復(fù)臨時(shí)保存的信息躲庄,但是并不刪除記錄。

34 git stash drop

刪除臨時(shí)保存的信息钾虐。

35 git tag tag_name

創(chuàng)建一個(gè)輕量級(jí)標(biāo)簽病往。

36 git tag -a tag_name -m 'xxxx'

創(chuàng)建一個(gè)帶有附注的標(biāo)簽

37 git tag -d tag_name

刪除標(biāo)簽斜筐。

38 git tag

查看所有標(biāo)簽。

39 git tag -l "v*"

查找標(biāo)簽。

40 git blame <file>

查看文件的修改記錄式曲。會(huì)顯示每一行是誰修改的吠谢,還有修改時(shí)間和commit_id诵姜。

41 git diff

比較工作區(qū)和暫存區(qū)文件的區(qū)別佩伤。
暫存區(qū)視為原始文件,工作區(qū)視為目標(biāo)文件济丘。

42 git diff commit_id

比較工作區(qū)與具體對(duì)象庫(版本庫谱秽、git commit后的)的差別。
對(duì)象庫視為原始文件,工作區(qū)視為目標(biāo)文件疟赊。

43 gif diff HEAD

比較工作區(qū)與當(dāng)前對(duì)象庫(版本庫辱士、git commit后的)的差別。
版本庫視為原始文件听绳,工作區(qū)視為目標(biāo)文件。

44 git diff --cached 或者 git diff --cached commit_id

比較暫存區(qū)和對(duì)象庫(版本庫异赫、git commit后的)的差別椅挣。

45 git remote add origin xxxx.git

這里的origin為一個(gè)別名,實(shí)際代表xxxx.git塔拳。

46 git push -u origin master

將本地的倉庫推送至遠(yuǎn)程的倉庫鼠证,并與之進(jìn)行關(guān)聯(lián)。

47 git remote show origin

查看遠(yuǎn)程版本庫信息靠抑。

48 git config --global alias.別名 要替代的命令

給指令起別名量九。

49 git push --set-upstream origin branch_name

1.將當(dāng)前的本地分支推送到遠(yuǎn)程。
2.在遠(yuǎn)程也創(chuàng)建一個(gè)名字叫跟他同名的分支颂碧。
3.并將它們的關(guān)系綁定起來荠列。遠(yuǎn)程分支為本地分支的上游分支。

50 gitt push--set-upstream origin develop/develop2

將本地分支develop推送至遠(yuǎn)程分支develop2载城。

51 git push origin :branch_name

刪除遠(yuǎn)程分支肌似。(將一個(gè)空分支推送到遠(yuǎn)程分支,冒號(hào)之前空格)

52 git push origin --delete branch_name

刪除遠(yuǎn)程分支诉瓦。

53 重命名遠(yuǎn)程分支

要想重命名遠(yuǎn)程分支川队。
1.需要先刪除遠(yuǎn)程分支。git push origin --delete branch_name
2.然后將本地分支改名睬澡。git branch -m old_branch new_branch
3.再將本地分支推送至遠(yuǎn)程分支固额。git push --set-upstream origin branch_name

54 push 和 pull

push 操作的完整命令是:
git push origin srcBranch:destBranch
srcBranch(本地分支)
destBranch(遠(yuǎn)程分支)

pull操作完整命令是:
git pull origin srcBranch:destBranch
srcBranch(遠(yuǎn)程分支)
destBranch(本地分支)

HEAD標(biāo)記符:HEAD文件是一個(gè)指向你當(dāng)前所在分支的引用標(biāo)識(shí)符。

55 git push origin tag_name

推送分支到遠(yuǎn)程煞聪。

56 git push origin --tag

把本地尚未推送到遠(yuǎn)程的標(biāo)簽都推送到遠(yuǎn)程斗躏。

57 git push origin --delete tag tag_name

刪除遠(yuǎn)程標(biāo)簽。

58 git remote purne origin

將本地?zé)o效的分支進(jìn)行刪除米绕。(如果遠(yuǎn)程分支已經(jīng)被刪除)

59

60 git submodule add A B

將遠(yuǎn)程分支A地址作為子倉庫瑟捣,然后在本地文件夾會(huì)創(chuàng)建B文件夾。并把A的源碼clone到B文件夾中栅干。

61 git submodule foreach git pull

遍歷每個(gè)submodule進(jìn)行pull操作

62 git submodule init

第一次獲取工程的時(shí)候迈套,需要在主工程執(zhí)行submodule的初始化操作。注冊

63 git submodule update --recursive

遞歸更新submodule

64 一次性獲取獲取主模塊和子模塊

git clone xxxx --recursive

65 刪除submodule

git rm --cache mymodule
rm -rf mymodule
git add commit -m 'remove'
git push
rm .gitmodule
git add .
git commit -m 'delete .gitsubmodule'
git push

66 通過subtree添加子工程

git remote add subtree-module xxxx.git(subtree-module為自定義的名稱碱鳞。主要就是將xxx.git賦值給它桑李,方便后面書寫)
git subtree add --prefix=subtree subtree-origin master
本地創(chuàng)建一個(gè)叫substree的目錄,并從subtree-origin對(duì)應(yīng)的地址拉取master的代碼。

67 git cheey-pick commit_id

將commit_id對(duì)應(yīng)的提交給應(yīng)用到到當(dāng)前分支贵白。

68 git rebase branch_name(建議只在本地分支使用)

git rebase 與 merge的功能類似率拒,但在git log可以看到有所區(qū)別。
實(shí)際上可以理解上禁荒,將一個(gè)分支上的修改應(yīng)用到另一個(gè)分支上猬膨。

rebase parent變化


69 rebase 沖突處理

1.解決沖突后,使用git add進(jìn)行添加標(biāo)記呛伴。
2.執(zhí)行g(shù)it rebase --continue勃痴。
3.git rebase --skip 可以跳過這個(gè)沖突,并保留現(xiàn)有分支的热康。

70 git rebase --abort

種植rebase沛申,分支會(huì)恢復(fù)到rebase開始之前的狀態(tài)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末姐军,一起剝皮案震驚了整個(gè)濱河市铁材,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌奕锌,老刑警劉巖著觉,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異惊暴,居然都是意外死亡固惯,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門缴守,熙熙樓的掌柜王于貴愁眉苦臉地迎上來葬毫,“玉大人,你說我怎么就攤上這事屡穗√瘢” “怎么了?”我有些...
    開封第一講書人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵村砂,是天一觀的道長烂斋。 經(jīng)常有香客問我,道長础废,這世上最難降的妖魔是什么汛骂? 我笑而不...
    開封第一講書人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮评腺,結(jié)果婚禮上帘瞭,老公的妹妹穿的比我還像新娘。我一直安慰自己蒿讥,他們只是感情好蝶念,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開白布抛腕。 她就那樣靜靜地躺著,像睡著了一般媒殉。 火紅的嫁衣襯著肌膚如雪担敌。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,573評(píng)論 1 305
  • 那天廷蓉,我揣著相機(jī)與錄音全封,去河邊找鬼。 笑死桃犬,一個(gè)胖子當(dāng)著我的面吹牛售貌,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播疫萤,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼敢伸!你這毒婦竟也來了扯饶?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤池颈,失蹤者是張志新(化名)和其女友劉穎尾序,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體躯砰,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡每币,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了琢歇。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片兰怠。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖揭保,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情魄宏,我是刑警寧澤秸侣,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站宠互,受9級(jí)特大地震影響味榛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜予跌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一搏色、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧券册,春花似錦继榆、人聲如沸巾表。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽集币。三九已至,卻和暖如春翠忠,著一層夾襖步出監(jiān)牢的瞬間鞠苟,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來泰國打工秽之, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留当娱,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓考榨,卻偏偏與公主長得像跨细,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子河质,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355