Git廖雪峰教程小結(jié)

根據(jù)https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000教程整理的git學(xué)習(xí)筆記。另附Git官網(wǎng)地址:http://git-scm.com宣虾。w

1后控、創(chuàng)建版本庫

? ? 設(shè)置全局的姓名和email:

$ git config --global user.name"Your Name"$ git config --global user.email"email@example.com"

????初始化一個(gè)Git倉庫栅组,使用git init命令坞琴;

? ? 添加文件到Git倉庫居暖,分兩步:

使用命令git add 命令赚楚,可以用空格間隔多個(gè)文件名威酒,添加多個(gè)文件;

使用命令git commit -m "說明信息"归形,完成托慨。

2、時(shí)光機(jī)穿梭

2.1 查看修改的內(nèi)容

git status 查看工作區(qū)的狀態(tài)可以知道哪個(gè)文件被修改暇榴;

git diff 文件名? 查看該文件的修改內(nèi)容厚棵,比較的是工作區(qū)和暫存區(qū),也就是沒有add時(shí)看到的改動(dòng)蔼紧。

2.2 在不同的版本之間切換

git log 查看過去提交(commit)的記錄婆硬;

git log --pretty=oneline 一行簡略查看過去提交的記錄;

在過去的記錄中歉井,要注意commit id(版本號(hào))柿祈,由SHA1計(jì)算出的一個(gè)很大的數(shù)哈误,可以通過commit id進(jìn)行不同版本的切換哩至;

git reset --hard [commit id] 切換到指定id的版本,若不產(chǎn)生歧義蜜自,id可以只寫前幾位菩貌;

git reset --hard HEAD^ 切換到當(dāng)前版本的上一個(gè)版本,其中HEAD表示當(dāng)前版本重荠,一個(gè)^代表上一個(gè)版本箭阶,HEAD~100上100個(gè)版本;

git reflog 查看過去命令的記錄戈鲁。

2.3 管理修改

Git管理的是修改仇参,而不是文件。

第一次修改 -> git add -> 第二次修改 -> git commit 中婆殿,因?yàn)閍dd命令添加了第一次修改诈乒,所以只提交了第一次修改。

git diff HEAD -- readme.txt? 查看add操作之后的改動(dòng)婆芦。

2.4 撤銷修改

1怕磨、當(dāng)亂改了文件的內(nèi)容喂饥,還沒有add,則使用命令git checkout -- file撤銷修改肠鲫;

2员帮、當(dāng)亂改了文件的內(nèi)容,已經(jīng)add了导饲,則使用命令git reset HEAD file撤銷暫存區(qū)的修改捞高,再回到第1步;

3渣锦、已經(jīng)提交了不合適的修改到版本庫時(shí)棠枉,想要撤銷本次提交,參考版本回退一節(jié)泡挺,不過前提是沒有推送到遠(yuǎn)程庫(對(duì)這句話存疑)辈讶。

2.5 刪除文件

1、真要?jiǎng)h除某個(gè)文件:先通過rm刪除該文件娄猫,再通過git rm file增加刪除文件的修改贱除,最后commit提交;

2媳溺、若是誤刪某個(gè)文件:通過git checkout -- file恢復(fù)該文件月幌,git checkout其實(shí)是用版本庫里的版本替換工作區(qū)的版本,無論工作區(qū)是修改還是刪除悬蔽,都可以“一鍵還原”扯躺。

3、遠(yuǎn)程倉庫

3.1 Github添加秘鑰

1蝎困、創(chuàng)建SSH秘鑰:?ssh-keygen -t rsa -C "youremail@example.com"录语,在用戶目錄下會(huì)有.ssh文件夾,文件夾底下有公鑰文件id_rsa.pub禾乘;

2澎埠、將id_rsa.pub文件中的內(nèi)容添加到Github Setting頁面里的SSH Key里。

3.2 添加遠(yuǎn)程庫

1始藕、git remote add origin git@github.com:username/learngit.git蒲稳;相當(dāng)于為遠(yuǎn)程倉庫地址取名叫origin;

2伍派、第一次push時(shí)江耀,git push -u origin master,-u將本地的master分支和遠(yuǎn)程的master分支關(guān)聯(lián)起來诉植;

3祥国、后面再push時(shí),可以直接使用git push origin master倍踪。

3.3 從遠(yuǎn)程庫克隆

克隆命令:git clone?git@(https//)github.com:username/learngit.git系宫。

4索昂、分支管理

4.1 創(chuàng)建和合并分支

當(dāng)修改自己的代碼到一半不能提交保存時(shí),為了防止自己干了一半的東西因?yàn)楫惓OЮ┙瑁梢詣?chuàng)建自己的分支椒惨,在自己的分支中進(jìn)行修改,然后切換到主分支用merge命令合并潮罪,最后再刪除自己的分支康谆。

1、查看分支:git branch嫉到;

2沃暗、創(chuàng)建分支:git branch ;

3何恶、切換分支:git checkout 孽锥;

4、創(chuàng)建并切換分支:git checkout -b 细层;

5惜辑、合并某分支到當(dāng)前分支:git merge ,其中自動(dòng)采用的是fast-forward模式合并的疫赎,即將當(dāng)前分支指向被合并分支的最新結(jié)點(diǎn)盛撑。

6、刪除分支:git branch -d

4.2 解決沖突

當(dāng)自己分支的代碼和主分支別人提交的在merge過程發(fā)生沖突捧搞,可以在文件中看到?jīng)_突的地方抵卫,然后對(duì)其進(jìn)行合并,最后add commit提交合并后的內(nèi)容胎撇,最后刪除自己的分支(自己的分支還是在的)介粘。

當(dāng)Git無法自動(dòng)合并分支時(shí),就必須首先解決沖突创坞。解決沖突后碗短,再提交,合并完成题涨。

git log --graph --pretty=oneline --abbrev-commit? 可以以圖形的形式查看分支。

4.3 分支管理策略

強(qiáng)制禁用Fast-forward模式总滩,Git就會(huì)在merge時(shí)生成一個(gè)新的commit纲堵,這樣,從分支歷史上就可以看出分支信息闰渔。

git merge --no-ff -m "說明信息" dev席函,--no-ff表示禁用fast-forward模式;

在工作中冈涧,最終上線的代碼都在master分支上茂附,具體迭代的修改在dev分支上正蛙,其他人再建立各自的分支,做出修改后提交到dev分支上营曼,最后dev分支合并到master分支上上線完成版本迭代乒验。

4.4 Bug分支(臨時(shí)改bug)

修復(fù)bug時(shí),我們會(huì)通過創(chuàng)建新的bug分支進(jìn)行修復(fù)蒂阱,然后合并锻全,最后刪除bug分支;

當(dāng)手頭工作沒有完成時(shí)录煤,先把工作現(xiàn)場git stash一下鳄厌,然后去修復(fù)bug,修復(fù)后妈踊,再git stash pop了嚎,回到工作現(xiàn)場。

git stash pop:恢復(fù)的同時(shí)把stash內(nèi)容也刪了廊营;

git stash apply:恢復(fù)后新思,stash內(nèi)容并不刪除;

git stash drop:刪除stash內(nèi)容赘风。

4.5 Feature分支(增加新功能)

添加一個(gè)新功能時(shí)夹囚,你肯定不希望因?yàn)橐恍?shí)驗(yàn)性質(zhì)的代碼,把主分支搞亂了邀窃,所以荸哟,每添加一個(gè)新功能,最好新建一個(gè)feature分支瞬捕,在上面開發(fā)鞍历,完成后,合并肪虎,最后劣砍,刪除該feature分支。

git branch -D 分支名:強(qiáng)行刪除一個(gè)沒有合并過的分支扇救。

4.6 多人協(xié)作

1刑枝、git remote -v:查看遠(yuǎn)程庫信息;

2迅腔、本地新建的分支不push到遠(yuǎn)程庫装畅,對(duì)別人而言就是不可見的;

3沧烈、想提交一個(gè)新的分支到github上:

(1)若該分支在github上已經(jīng)有了掠兄,則使用git checkout -b dev origin/dev創(chuàng)建本地分支即可,該命令也會(huì)將本地分支和遠(yuǎn)程分支自動(dòng)關(guān)聯(lián);或者使用git checkout -b dev先創(chuàng)建并切換到本地分支蚂夕,再通過git branch --set-upstream-to=origin/dev建立本地dev分支和遠(yuǎn)程dev分支的聯(lián)系

(2)若該分支在github上沒有迅诬,則先創(chuàng)建本地分支,再git push -u origin dev提交分支,-u將本地dev分支和遠(yuǎn)程dev分支關(guān)聯(lián)起來。

4衫嵌、當(dāng)別人先提交改動(dòng)到dev分支上,本地就不能直接git push origin dev提交改動(dòng)铐维,先要git pull (origin dev)把別人的改動(dòng)拉到本地merge,處理沖突慎菲,并commit嫁蛇,接著才能push。其中露该,需要注意的是pull并不是把遠(yuǎn)程庫的文件拉過來覆蓋當(dāng)前文件睬棚,而是與本地文件merge合并。

PS:刪除遠(yuǎn)程關(guān)聯(lián):git remote rm origin

建立遠(yuǎn)程關(guān)聯(lián):git remote add origin git@github.com:xxx/xxx解幼。

5抑党、標(biāo)簽管理

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

1、commit id不好記撵摆,所以需要tag來表示某個(gè)版本底靠,如v1.0;

2特铝、首先切換到需要打tag的分支暑中;

3、git tag v1.0 用于新建一個(gè)標(biāo)簽鲫剿,默認(rèn)為HEAD鳄逾,也可以指定一個(gè)commit id;

4灵莲、git show 查看標(biāo)簽信息:

5雕凹、git tag -a -m "標(biāo)簽信息" 可以指定標(biāo)簽信息;

6政冻、git tag -s -m "標(biāo)簽信息"""可以用PGP簽名標(biāo)簽枚抵;

7、git tag可以查看所有的標(biāo)簽赠幕。

5.2 操作標(biāo)簽

1俄精、git push origin 向遠(yuǎn)程庫推送一個(gè)tag;

2榕堰、git push origin --tags 向遠(yuǎn)處庫推送全部未推送的本地tag;

3、git tag -d 刪除一個(gè)本地tag逆屡;

4圾旨、git push origin :refs/tags/刪除一個(gè)遠(yuǎn)程的tag。

6魏蔗、GitHub

參與別人開源項(xiàng)目的構(gòu)建:

1砍的、在GitHub上,可以任意Fork開源倉庫莺治;

2廓鞠、自己擁有Fork后的倉庫的讀寫權(quán)限;

3谣旁、可以推送pull request給官方倉庫來貢獻(xiàn)代碼床佳。

7、自定義Git

1榄审、讓Git顯示顏色砌们,會(huì)讓命令輸出看起來更醒目:git config --global color.ui true;

2搁进、讓git忽略某些特殊文件:

在Git工作區(qū)根目錄下新建一個(gè)文件.gitignore浪感,其中包含了所有需要忽略的文件或目錄;

可以參考https://github.com/github/gitignore上的.gitignore文件進(jìn)行修改饼问;

如果想添加某個(gè)被忽略的文件:

(1)可以使用git add -f 強(qiáng)制添加影兽;

(2)可以使用git check-ignore -v 查看是.gitignore文件的哪一行添加了該文件名。

3莱革、配置別名:(如峻堰,將git status命令改為git st)

git config <--global> alias.st status;加上<--global>代表該別名全局有效驮吱,配置文件為用戶目錄下的.gitconfig文件茧妒。

git config <--global> alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit" 一鍵配置log

別名的配置不是全局的,可以在.git/config底下的[alias]標(biāo)簽看到左冬;是全局的桐筏,則在用戶主目錄下的.gitconfig文件中可以看到。

4拇砰、建立Git服務(wù)器可以參考鏈接:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/00137583770360579bc4b458f044ce7afed3df579123eca000

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末梅忌,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子除破,更是在濱河造成了極大的恐慌牧氮,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瑰枫,死亡現(xiàn)場離奇詭異踱葛,居然都是意外死亡丹莲,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門尸诽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來甥材,“玉大人,你說我怎么就攤上這事性含≈拚裕” “怎么了?”我有些...
    開封第一講書人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵商蕴,是天一觀的道長叠萍。 經(jīng)常有香客問我,道長绪商,這世上最難降的妖魔是什么苛谷? 我笑而不...
    開封第一講書人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮部宿,結(jié)果婚禮上抄腔,老公的妹妹穿的比我還像新娘。我一直安慰自己理张,他們只是感情好赫蛇,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著雾叭,像睡著了一般悟耘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上织狐,一...
    開封第一講書人閱讀 51,679評(píng)論 1 305
  • 那天暂幼,我揣著相機(jī)與錄音,去河邊找鬼移迫。 笑死旺嬉,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的厨埋。 我是一名探鬼主播邪媳,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼荡陷!你這毒婦竟也來了雨效?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤废赞,失蹤者是張志新(化名)和其女友劉穎徽龟,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體唉地,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡据悔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年传透,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片屠尊。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡旷祸,死狀恐怖耕拷,靈堂內(nèi)的尸體忽然破棺而出讼昆,到底是詐尸還是另有隱情,我是刑警寧澤骚烧,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布浸赫,位于F島的核電站,受9級(jí)特大地震影響赃绊,放射性物質(zhì)發(fā)生泄漏既峡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一碧查、第九天 我趴在偏房一處隱蔽的房頂上張望运敢。 院中可真熱鬧,春花似錦忠售、人聲如沸传惠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽卦方。三九已至,卻和暖如春泰佳,著一層夾襖步出監(jiān)牢的瞬間盼砍,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來泰國打工逝她, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留浇坐,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓黔宛,卻偏偏與公主長得像近刘,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子宁昭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

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

  • chapter 1: 如何創(chuàng)建版本庫 初始化一個(gè)倉庫 $ git init 添加文件到Git倉庫的過程: $ gi...
    飛將軍閱讀 2,883評(píng)論 0 2
  • 這篇博文是自己在學(xué)習(xí)git過程中的思考總結(jié)跌宛。本文僅僅代表個(gè)人的看法,如有不妥地方還請(qǐng)本文文末留言积仗。 ?? 原文鏈接g...
    Ming_Hu閱讀 1,075評(píng)論 4 18
  • Git 是目前最流行的分布式版本控制系統(tǒng)之一疆拘。 版本控制指的是,記錄每次版本變更的內(nèi)容和時(shí)間等細(xì)節(jié)寂曹,保留各版本之間...
    神齊閱讀 1,427評(píng)論 0 7
  • 寫在前面 有關(guān)Git的誕生故事以及Git的強(qiáng)大哎迄,這里無須贅述回右。寫這篇文章的原因是因?yàn)椋?xí)慣了用Git桌面工具向Gi...
    艾倫先生閱讀 558評(píng)論 0 3
  • “抽象化會(huì)讓觀點(diǎn)不易被理解漱挚,也不易被記紫杷浮;抽象化還會(huì)使認(rèn)與人之間的活動(dòng)難以協(xié)調(diào)旨涝,因?yàn)閯e人可能會(huì)以不同的方式解讀這些...
    huixianpenny閱讀 389評(píng)論 0 0