Git學(xué)習(xí)

git筆記

廖雪峰Git教程

創(chuàng)建版本庫(kù)(repository)

  1. 創(chuàng)建一個(gè)空目錄:

    $ mkdir learngit
    $ cd learngit
    $ pwd
    /Users/michael/learngit
    
  2. 通過(guò)git init 把這個(gè)目錄變成Git可以管理的倉(cāng)庫(kù):

    $ git init
    

把文件添加到版本庫(kù)

一定要放到learngit目錄下(子目錄亦可)

  1. git add 把文件添加到倉(cāng)庫(kù)

    $ git add readme.txt
    
  2. git commit 告訴Git, 把文件提交到倉(cāng)庫(kù)

    $ git commit -m "wrote a readme file" 
    

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

gti diff 可以看到做了什么修改

版本回退

  1. HEAD指向的版本就是當(dāng)前版本悼院,因此虑凛,Git允許我們?cè)诎姹镜臍v史之間穿梭,使用命令git reset --hard commit_id腐巢。
  2. 穿梭前交胚,用git log可以查看提交歷史中鼠,以便確定要回退到哪個(gè)版本胯究。
  3. 要重返未來(lái),用git reflog查看命令歷史泼舱,以便確定要回到未來(lái)的哪個(gè)版本等缀。

撤銷修改

git checkout -- file可以丟棄工作區(qū)的修改:

一種是readme.txt自修改后還沒(méi)有被放到暫存區(qū),現(xiàn)在娇昙,撤銷修改就回到和版本庫(kù)一模一樣的狀態(tài)尺迂;

一種是readme.txt已經(jīng)添加到暫存區(qū)后,又作了修改冒掌,現(xiàn)在噪裕,撤銷修改就回到添加到暫存區(qū)后的狀態(tài)。

總之股毫,就是讓這個(gè)文件回到最近一次git commitgit add時(shí)的狀態(tài)膳音。

刪除文件

$ git rm test.txt

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

  1. 創(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)容毫深。

添加遠(yuǎn)程庫(kù)

  1. 登陸GitHub吩坝,然后,在右上角找到“Create a new repo”按鈕哑蔫,創(chuàng)建一個(gè)新的倉(cāng)庫(kù)

  2. 我們根據(jù)GitHub的提示钉寝,在本地的learngit倉(cāng)庫(kù)下運(yùn)行命令

  3. 遠(yuǎn)程庫(kù)的名字就是origin,這是Git默認(rèn)的叫法闸迷,也可以改成別的嵌纲,但是origin這個(gè)名字一看就知道是遠(yuǎn)程庫(kù)

  4. 把本地庫(kù)的內(nèi)容推送到遠(yuǎn)程,用git push命令腥沽,實(shí)際上是把當(dāng)前分支master推送到遠(yuǎn)程逮走。

    由于遠(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)化命令墓臭。

  5. 從現(xiàn)在起蘸鲸,只要本地作了提交,就可以通過(guò)命令

    $ git push origin master
    

從遠(yuǎn)程庫(kù)克隆

  1. 登陸GitHub窿锉,創(chuàng)建一個(gè)新的倉(cāng)庫(kù)酌摇,名字叫gitskills

  2. 用命令git clone克隆一個(gè)本地庫(kù)

    $ git clone git@github.com:michaelliao/gitskills.git
    

創(chuàng)建與合并分支

  1. 創(chuàng)建dev分支,然后切換到dev分支:

    $ git checkout -b dev
    

    git checkout命令加上-b參數(shù)表示創(chuàng)建并切換,相當(dāng)于以下兩條命令:

    $ git branch dev
    $ git checkout dev
    
  2. git branch命令查看當(dāng)前分支:

    $ git branch
    
  3. dev分支的工作完成嗡载,我們就可以切換回master分支

    $ git checkout master
    
  4. dev分支的工作成果合并到master分支上

    $ git merge dev
    
  5. 刪除dev分支

    $ git branch -d dev
    

解決沖突

  • git status可以告訴我們沖突的文件

  • 直接查看沖突文件內(nèi)容窑多,Git用<<<<<<<=======鼻疮,>>>>>>>標(biāo)記出不同分支的內(nèi)容

  • 帶參數(shù)的git log也可以看到分支的合并情況

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

分支管理策略

Bug分支

當(dāng)手頭工作沒(méi)有完成時(shí)怯伊,先把工作現(xiàn)場(chǎng)git stash一下,然后去修復(fù)bug判沟,修復(fù)后耿芹,再git stash pop,回到工作現(xiàn)場(chǎng)挪哄。

多人協(xié)作

多人協(xié)作的工作模式通常是這樣:

  1. 首先吧秕,可以試圖用git push origin branch-name推送自己的修改;
  2. 如果推送失敗迹炼,則因?yàn)檫h(yuǎn)程分支比你的本地更新砸彬,需要先用git pull試圖合并;
  3. 如果合并有沖突斯入,則解決沖突砂碉,并在本地提交;
  4. 沒(méi)有沖突或者解決掉沖突后刻两,再用git push origin branch-name推送就能成功增蹭!

如果git pull提示“no tracking information”,則說(shuō)明本地分支和遠(yuǎn)程分支的鏈接關(guān)系沒(méi)有創(chuàng)建磅摹,用命令git branch --set-upstream branch-name origin/branch-name滋迈。

  • 查看遠(yuǎn)程庫(kù)信息,使用git remote -v户誓;
  • 本地新建的分支如果不推送到遠(yuǎn)程饼灿,對(duì)其他人就是不可見(jiàn)的;
  • 從本地推送分支帝美,使用git push origin branch-name碍彭,如果推送失敗,先用git pull抓取遠(yuǎn)程的新提交;
  • 在本地創(chuàng)建和遠(yuǎn)程分支對(duì)應(yīng)的分支硕旗,使用git checkout -b branch-name origin/branch-name窗骑,本地和遠(yuǎn)程分支的名稱最好一致;
  • 建立本地分支和遠(yuǎn)程分支的關(guān)聯(lián)漆枚,使用git branch --set-upstream branch-name origin/branch-name创译;
  • 從遠(yuǎn)程抓取分支,使用git pull墙基,如果有沖突软族,要先處理沖突。

創(chuàng)建標(biāo)簽

  • 命令git tag用于新建一個(gè)標(biāo)簽残制,默認(rèn)為HEAD立砸,也可以指定一個(gè)commit id;
  • git tag -a -m "blablabla..."可以指定標(biāo)簽信息初茶;
  • git tag -s -m "blablabla..."可以用PGP簽名標(biāo)簽颗祝;
  • 命令git tag可以查看所有標(biāo)簽。
  • 命令git push origin可以推送一個(gè)本地標(biāo)簽恼布;
  • 命令git push origin --tags可以推送全部未推送過(guò)的本地標(biāo)簽螺戳;
  • 命令git tag -d可以刪除一個(gè)本地標(biāo)簽;
  • 命令git push origin :refs/tags/可以刪除一個(gè)遠(yuǎn)程標(biāo)簽折汞。

操作標(biāo)簽

  • 命令git push origin可以推送一個(gè)本地標(biāo)簽倔幼;
  • 命令git push origin --tags可以推送全部未推送過(guò)的本地標(biāo)簽;
  • 命令git tag -d可以刪除一個(gè)本地標(biāo)簽爽待;
  • 命令git push origin :refs/tags/可以刪除一個(gè)遠(yuǎn)程標(biāo)簽损同。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市鸟款,隨后出現(xiàn)的幾起案子膏燃,更是在濱河造成了極大的恐慌,老刑警劉巖何什,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蹄梢,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡富俄,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)而咆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)霍比,“玉大人,你說(shuō)我怎么就攤上這事暴备∮扑玻” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)浅妆。 經(jīng)常有香客問(wèn)我望迎,道長(zhǎng),這世上最難降的妖魔是什么凌外? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任辩尊,我火速辦了婚禮,結(jié)果婚禮上康辑,老公的妹妹穿的比我還像新娘摄欲。我一直安慰自己,他們只是感情好疮薇,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布胸墙。 她就那樣靜靜地躺著,像睡著了一般按咒。 火紅的嫁衣襯著肌膚如雪迟隅。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,764評(píng)論 1 290
  • 那天励七,我揣著相機(jī)與錄音智袭,去河邊找鬼。 笑死呀伙,一個(gè)胖子當(dāng)著我的面吹牛补履,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播剿另,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼箫锤,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了雨女?” 一聲冷哼從身側(cè)響起谚攒,我...
    開(kāi)封第一講書(shū)人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎氛堕,沒(méi)想到半個(gè)月后馏臭,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡讼稚,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年括儒,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片锐想。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡帮寻,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出赠摇,到底是詐尸還是另有隱情固逗,我是刑警寧澤浅蚪,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站烫罩,受9級(jí)特大地震影響惜傲,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜贝攒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一盗誊、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧饿这,春花似錦浊伙、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至串结,卻和暖如春哑子,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背肌割。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工卧蜓, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人把敞。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓弥奸,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親奋早。 傳聞我的和親對(duì)象是個(gè)殘疾皇子盛霎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

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