Git學(xué)習(xí)小結(jié)

現(xiàn)在已經(jīng)使用git在項(xiàng)目中做版本控制工具神年,但是從來(lái)沒(méi)有詳細(xì)的學(xué)過(guò)一遍git的命令行操作方法卖局,這次也是通過(guò)廖雪峰的git教程在來(lái)仔細(xì)的學(xué)習(xí)了一遍拒秘。這篇文字也是做一個(gè)學(xué)習(xí)的記錄考榨。
廖雪峰Git教程

git init

命令把這個(gè)目錄變成Git可以管理的倉(cāng)庫(kù) 創(chuàng)建倉(cāng)庫(kù)

git add

向倉(cāng)庫(kù)中添加文件跨细,實(shí)際上是吧文件添加到暫存區(qū)

$ git add <file> 

git commit

提交文件,實(shí)際上是把暫存區(qū)的所有內(nèi)容提交到當(dāng)前分支

$ git commit -m "提交說(shuō)明"

git status

命令可以讓我們時(shí)刻掌握倉(cāng)庫(kù)當(dāng)前的狀態(tài)

git diff

顧名思義就是查看differencegit

$ git diff <file> 

$ git diff HEAD --<file>  該命令可以查看工作區(qū)和版本庫(kù)里面最新版本的區(qū)別

git log

命令查看提交日志

git log --pretty=oneline
將日志簡(jiǎn)化顯示 一行
$ git log --graph
查看分支合并日志
$ git log --graph --pretty=oneline
查看分支合并日志董虱,并一行顯示
$ git log --graph --pretty=oneline --abbrev-commit
查看分支合并日志扼鞋,并一行顯示申鱼,簡(jiǎn)化commit id 顯示

git reset

$ git reset --hard HEAD^  
退回上一個(gè)版本
$ git reset --hard <commit id> 
退回到指定的版本
$ git reset HEAD <file> 
可以把暫存區(qū)的修改撤銷掉(unstage)愤诱,重新放回工作區(qū)

HEAD 表示是最新版本

在Git中,用HEAD表示當(dāng)前版本捐友,也就是最新的提交3628164...882e1e0(注意我的提交ID和你的肯定不一樣)淫半,上一個(gè)版本就是HEAD,上上一個(gè)版本就是HEAD匣砖,當(dāng)然往上100個(gè)版本寫100個(gè)比較容易數(shù)不過(guò)來(lái)科吭,所以寫成HEAD~100。

git reflog

用來(lái)記錄你的每一次命令:提交切換版本id等

git checkout -- filename

把<file>文件在工作區(qū)的修改全部撤銷猴鲫,這里有兩種情況:

一種是<file>自修改后還沒(méi)有被放到暫存區(qū)对人,現(xiàn)在,撤銷修改就回到和版本庫(kù)一模一樣的狀態(tài)拂共;

一種是<file>已經(jīng)添加到暫存區(qū)后牺弄,又作了修改,現(xiàn)在宜狐,撤銷修改就回到添加到暫存區(qū)后的狀態(tài)势告。

git rm

$ git rm <file> 從版本庫(kù)中刪除文件

Git跟蹤并管理的是修改蛇捌,而非文件。

第一次修改 -> git add -> 第二次修改 -> git commit

你看咱台,我們前面講了络拌,Git管理的是修改,當(dāng)你用git add命令后,在工作區(qū)的第一次修改被放入暫存區(qū)液斜,準(zhǔn)備提交居触,但是,在工作區(qū)的第二次修改并沒(méi)有放入暫存區(qū)祥诽,所以,git commit只負(fù)責(zé)把暫存區(qū)的修改提交了瓮恭,也就是第一次的修改被提交了雄坪,第二次的修改不會(huì)被提交。

撤銷修改的小結(jié):

場(chǎng)景1:當(dāng)你改亂了工作區(qū)某個(gè)文件的內(nèi)容屯蹦,想直接丟棄工作區(qū)的修改時(shí)维哈,用命令git checkout -- file

場(chǎng)景2:當(dāng)你不但改亂了工作區(qū)某個(gè)文件的內(nèi)容登澜,還添加到了暫存區(qū)時(shí)阔挠,想丟棄修改,分兩步脑蠕,第一步用命令git reset HEAD file购撼,就回到了場(chǎng)景1,第二步按場(chǎng)景1操作谴仙。

場(chǎng)景3:已經(jīng)提交了不合適的修改到版本庫(kù)時(shí)迂求,想要撤銷本次提交,可以使用退回版本晃跺,不過(guò)前提是沒(méi)有推送到遠(yuǎn)程庫(kù)揩局。

關(guān)聯(lián)GitHUb

SSH Key

第1步:創(chuàng)建SSH Key。在用戶主目錄下掀虎,看看有沒(méi)有.ssh目錄凌盯,如果有,再看看這個(gè)目錄下有沒(méi)有id_rsaid_rsa.pub這兩個(gè)文件烹玉,如果已經(jīng)有了驰怎,可直接跳到下一步。如果沒(méi)有二打,打開(kāi)Shell(Windows下打開(kāi)Git Bash)县忌,創(chuàng)建SSH Key:

$ ssh-keygen -t rsa -C "youremail@example.com"

第2步:登陸GitHub,打開(kāi)“Account settings”,“SSH Keys”頁(yè)面:
然后芹枷,點(diǎn)“Add SSH Key”衅疙,填上任意Title,在Key文本框里粘貼id_rsa.pub文件的內(nèi)容鸳慈。

本地倉(cāng)庫(kù)內(nèi)容推送到GitHub倉(cāng)庫(kù)

在本地倉(cāng)庫(kù)下使用一下命令饱溢,將本地倉(cāng)庫(kù)和GitHub倉(cāng)庫(kù)關(guān)聯(lián)起來(lái)

$ git remote add origin git@github.com:GitHub賬戶名/倉(cāng)庫(kù)名.git
origin是默認(rèn)的遠(yuǎn)程倉(cāng)庫(kù)名稱,可以自己修改

git push

將本地的倉(cāng)庫(kù)推送到遠(yuǎn)程

$ git push -u origin master

由于遠(yuǎn)程庫(kù)是空的走芋,我們第一次推送master分支時(shí)绩郎,加上了-u參數(shù),Git不但會(huì)把本地的master分支內(nèi)容推送的遠(yuǎn)程新的master分支翁逞,還會(huì)把本地的master分支和遠(yuǎn)程的master分支關(guān)聯(lián)起來(lái)肋杖,在以后的推送或者拉取時(shí)就可以簡(jiǎn)化命令。
$ git push origin branchname
在本地倉(cāng)庫(kù)提交后推送到遠(yuǎn)程倉(cāng)庫(kù)

git pull

將遠(yuǎn)程庫(kù)拉下來(lái)(更新遠(yuǎn)程庫(kù)的修改)

注:如果pull失敗挖函,原因是本地的分支沒(méi)有和遠(yuǎn)程的分支鏈接

$ git branch --set-upstream localbranch origin/dev   
localbranch:本地分支  origin/dev:遠(yuǎn)程庫(kù)名/分支

git clone

遠(yuǎn)程Clone倉(cāng)庫(kù)

$ git clone git@github.com:GitHub賬戶名/倉(cāng)庫(kù)名.git

git branch

查看分支

git branch <name>
創(chuàng)建分支
git checkout <name>
切換分支

git checkout

git checkout -b <name>
創(chuàng)建+切換分支
注:從遠(yuǎn)程庫(kù)clone下來(lái)時(shí)状植,默認(rèn)只能看到本地的master分支,如果想在clone下的庫(kù)的其它分支開(kāi)發(fā)可以用一下命令
$ git checkout -b dev origin/dev  遠(yuǎn)程origin庫(kù)的dev分支

git merge <name>

合并某分支到當(dāng)前分支:

$ git merge --no-ff -m "commit content" branchname
Git 默認(rèn)的合并方式是 Fast forward 這種模式下怨喘,刪除分支同樣會(huì)刪除分支信息
以--no-ff模式合并分支津畸,會(huì)生成一個(gè)新的commit,刪除分支后能看見(jiàn)分支的歷史信息
默認(rèn) Fast forward模式

git branch

git branch -d <name>
刪除分支
git branch -D <name>
強(qiáng)行刪除一個(gè)未合并的分支

git stash

把當(dāng)前的工作區(qū)“存儲(chǔ)”起來(lái)必怜,可以切換的其他分支修改bug肉拓,用于當(dāng)前開(kāi)到一半,需要去別的分支修改bug 的情況

git stash drop
刪除stash
git stash list
查看當(dāng)前stash的列表
git stash apply
恢復(fù)stash梳庆,但stash內(nèi)容并不刪除 
git stash apply stash@{0}
當(dāng)有多個(gè)stash列表的時(shí)候暖途,可以指定stash id 恢復(fù)
git stash pop
恢復(fù)的同時(shí)把stash內(nèi)容也刪了

git remote

查看遠(yuǎn)程庫(kù)的信息

git remote -v 
查看遠(yuǎn)程庫(kù)的詳細(xì)信息

git tag

tag就是給提交的一個(gè)commit綁定在一起,起一個(gè)更易于查找的名稱膏执。

git tag <name>用于新建一個(gè)標(biāo)簽驻售,默認(rèn)為HEAD,也可以指定一個(gè)commit id胧后;
git tag -a <tagname> -m "blablabla..."可以指定標(biāo)簽信息芋浮;
git tag -s <tagname> -m "blablabla..."可以用PGP簽名標(biāo)簽抱环;
git tag可以查看所有標(biāo)簽壳快。

git push origin <tagname>可以推送一個(gè)本地標(biāo)簽;
git push origin --tags可以推送全部未推送過(guò)的本地標(biāo)簽镇草;
git tag -d <tagname>可以刪除一個(gè)本地標(biāo)簽眶痰;
git push origin :refs/tags/<tagname>可以刪除一個(gè)遠(yuǎn)程標(biāo)簽。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末梯啤,一起剝皮案震驚了整個(gè)濱河市竖伯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖七婴,帶你破解...
    沈念sama閱讀 212,332評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件祟偷,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡打厘,警方通過(guò)查閱死者的電腦和手機(jī)修肠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,508評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)户盯,“玉大人嵌施,你說(shuō)我怎么就攤上這事∶а迹” “怎么了吗伤?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,812評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)硫眨。 經(jīng)常有香客問(wèn)我足淆,道長(zhǎng),這世上最難降的妖魔是什么礁阁? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,607評(píng)論 1 284
  • 正文 為了忘掉前任缸浦,我火速辦了婚禮,結(jié)果婚禮上氮兵,老公的妹妹穿的比我還像新娘裂逐。我一直安慰自己,他們只是感情好泣栈,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,728評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布卜高。 她就那樣靜靜地躺著,像睡著了一般南片。 火紅的嫁衣襯著肌膚如雪掺涛。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,919評(píng)論 1 290
  • 那天疼进,我揣著相機(jī)與錄音薪缆,去河邊找鬼。 笑死伞广,一個(gè)胖子當(dāng)著我的面吹牛拣帽,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播嚼锄,決...
    沈念sama閱讀 39,071評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼减拭,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了区丑?” 一聲冷哼從身側(cè)響起拧粪,我...
    開(kāi)封第一講書(shū)人閱讀 37,802評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤修陡,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后可霎,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體魄鸦,經(jīng)...
    沈念sama閱讀 44,256評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,576評(píng)論 2 327
  • 正文 我和宋清朗相戀三年癣朗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了号杏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,712評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡斯棒,死狀恐怖盾致,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情荣暮,我是刑警寧澤庭惜,帶...
    沈念sama閱讀 34,389評(píng)論 4 332
  • 正文 年R本政府宣布,位于F島的核電站穗酥,受9級(jí)特大地震影響护赊,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜砾跃,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,032評(píng)論 3 316
  • 文/蒙蒙 一骏啰、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧抽高,春花似錦判耕、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,798評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至碳竟,卻和暖如春草丧,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背莹桅。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,026評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工昌执, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人诈泼。 一個(gè)月前我還...
    沈念sama閱讀 46,473評(píng)論 2 360
  • 正文 我出身青樓懂拾,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親厂汗。 傳聞我的和親對(duì)象是個(gè)殘疾皇子委粉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,606評(píng)論 2 350

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

  • 安裝: windows安裝git-- msysgit是windows版的git呜师,下載單獨(dú)的.exe按照默認(rèn)選項(xiàng)安裝...
    alceyp閱讀 684評(píng)論 0 0
  • 1. 安裝 Github 查看是否安裝git: $ git config --global user.name "...
    Albert_Sun閱讀 13,645評(píng)論 9 163
  • Git是目前最流行的版本管理系統(tǒng)娶桦,也是最先進(jìn)的分布式版本控制系統(tǒng)(distributed version cont...
    pro648閱讀 5,683評(píng)論 1 17
  • 向世界宣揚(yáng)日本料理、追求美食道 臺(tái)灣分店「祥雲(yún)龍吟」日本米其林三星餐廳開(kāi)幕,有「用刀的天才」稱號(hào)的山本征治衷畦,即使所...
    丿阿九閱讀 560評(píng)論 0 2
  • 刻薄嘴欠不是幽默栗涂,口無(wú)遮攔并非坦率,沒(méi)有教養(yǎng)和隨性是兩回事祈争。別人自嘲斤程,你別去附和,不要把你的刻薄當(dāng)成你的性情
    野人_527f閱讀 687評(píng)論 0 1