git學(xué)習(xí)總結(jié)

???????????????????????????????????????Git for windows

本文只是自己的一些學(xué)習(xí)總結(jié)岖常,方便自己查看妖异,如果對您閱讀不適蟀俊,抱歉Rぐ睢U!

常用命令(省略$):git --help(查看命令);mkdir (創(chuàng)建目錄);

git init (將文件變成Git可管理的倉庫);

ls -ah(查看.git隱藏文件); pwd(當(dāng)前目錄); git add(添加文件到倉庫);

git commit -m(上傳文件到倉庫); git diff(查看修改內(nèi)容);

git status(查看當(dāng)前狀態(tài)); git log(查看版本); git log --pretty=oneline(查看版本);

git reflog(查看歷史版本); git reset --hard HEAD^(返回到上一個版本);

cat mygit.txt(查看當(dāng)前版本內(nèi)容);git checkout -- mygit.txt(未add撤銷修改);

git reset HEAD mygit.txt->git checkout -- mygit.txt(add后撤銷修改);

rm mygit.txt -> git checkout -- mygit.txt(撤銷刪除);

rm mygit.txt -> git rm mygit.txt -> git commit (刪除文件);

$ git remote add origin git@github.com:lxh597/learngit.git(關(guān)聯(lián)github)魔慷;

$ git push -u origin master(上傳到github倉庫);

$ git push origin master(本地修改后推送到github);

$ git clone git@github.com:lxh597/warehouse.git(克隆到本地);

$ git checkout -b dev(創(chuàng)建并切換至dev分支曹仗,相當(dāng)于git branch dev + git checkout dev); $ git branch(查看當(dāng)前分支);

$ git branch dev(創(chuàng)建dev分支); $ git checkout dev(切換至dev分支);

$ git merge dev(講dev分支合并到當(dāng)前分支); $ git branch -d dev(刪除dev分支);

$ git merge --no-ff -m “msg” dev(不適用fast forword合并岖免,log能看出曾經(jīng)合并過);

$ git stash(儲存當(dāng)前工作現(xiàn)場); $ git stash list(查看儲存列表);

$ git stash pop(恢復(fù)并刪除stash list內(nèi)容);

$ git stash 可多次儲存馏慨,用git stash list查看,然后使用git stash apply stash@{0}恢復(fù)侧甫,使用git stash drop刪除;

$ git remote -v(查看遠(yuǎn)程倉庫信息)

$ git tag v1.0(創(chuàng)建標(biāo)簽);

$ git log --pretty=oneline --abbrev-commit -> $ git tag v0.9 53ef5ce (根據(jù)commit id);

$ git tag(查看標(biāo)簽); $ git show v1.0(查看標(biāo)簽信息);

$ git tag -a v0.1 -m “version 0.1” 3a9175f (-a 標(biāo)簽名 -m說明);

$ git push origin v1.0(推送標(biāo)簽到遠(yuǎn)程);

$ git push origin --tags(所有未推送的標(biāo)簽推送到遠(yuǎn)程);

$ git tag -d v1.0(刪除標(biāo)簽);

$ git push origin :refs/tags/v0.9(刪除推送到遠(yuǎn)程的標(biāo)簽);

$ git push origin -d tag v0.1(同上);

一熄守、下載安裝

1腹缩、github 搜索git for windows

2常潮、選擇第一個waylau/git-for-win


3诸衔、選擇Git for windows Setup下載


4渣淳、下載完成后看到如下圖標(biāo) 雙擊安裝


5旁赊、點擊下一步


6鲜屏、最后True Type font為可選項(字體)


7、點擊下一步


8也殖、此項無影響土思,默認(rèn)勾選第一個


9、選擇換行符風(fēng)格

1)checkout為windows換行符忆嗜,commit為Unix風(fēng)格己儒;

2)checkout時不做任何處理,commit為Unix風(fēng)格捆毫;

3)文件的換行符不做任何處理闪湾;


10、選擇MinTTY窗口绩卤,美觀途样;


11、默認(rèn)設(shè)置即可濒憋;


12何暇、點擊install安裝;最后點擊finish即可凛驮;


13裆站、安裝完成后開始菜單會看到;目錄下shift+右鍵也會看到Git Bash 和Git GUI 選擇Git Bash黔夭;


二宏胯、創(chuàng)建版本庫

安裝完成后打開git命令行輸入:

$git config --global user.name? “ your name”

$git config --global user.email? “ 123456789@qq.com”? (你的郵箱地址)

因為git是分布式版本控制系統(tǒng),每臺機器都必須有自己的名字和郵箱纠修;--global表示此設(shè)備上的所有Git倉庫都會使用這個配置胳嘲,也可以為不同倉庫指定不同的用戶名和email地址厂僧;

選擇一個合適地方創(chuàng)建一個空文件夾

$ mkdir filename (創(chuàng)建一個空文件夾)

$ cd filename (進(jìn)入該文件夾目錄)

$ pwd (查看當(dāng)前目錄)

$ git init (將這個目錄變成Git可以管理的倉庫)出現(xiàn)如下信息表示創(chuàng)建成功扣草,并為一個空倉庫

Initialized empty Git repository in F:/learngit/learn/.git/

此時該目錄下多了一個.git的隱藏目錄,此目錄是Git跟蹤管理版本庫的颜屠,切勿修改辰妙,可能會破壞Git倉庫;此文件可以設(shè)置顯示隱藏文件或者輸入ls -ah命令查看甫窟;

在配置好的Git倉庫目錄下新建一個mygit.txt文件(名字隨意)密浑,我使用的sublime,字符編碼設(shè)置為utf-8;切勿使用windows文本文檔(原因百度)粗井;

內(nèi)容(隨意):Git is a version control system.

Git is free software.

一定要放到配置的Git倉庫文件目錄下尔破,不然Git找不到文件街图;

$ git add filename.txt

將文件添加到Git倉庫;執(zhí)行以上代碼沒有任何提示懒构,表示添加成功餐济,Unix哲學(xué)“沒有消息就是好消息”;

添加文件可以一次添加多個(如:$ git add filename1.txt? filename2.txt)

將文件提交到倉庫胆剧,輸入如下命令:

$ git commit -m “wrote a mygit file” (-m后面是提交說明絮姆,建議輸入一些有意義的內(nèi)容,方便自己或者別人閱讀)


上面提示告訴你一個文件改動(添加mygit.txt文件)秩霍,插入兩行內(nèi)容(文件有2行內(nèi)容)

$ git add 可以一次添加一個也可以添加多個文件篙悯,可反復(fù)多次使用,$ commit 一次將所有文件提交完成铃绒;

三鸽照、基本操作

Git is a distributed version control system.

Git is free software.

修改mygit.txt文件如上,命令行輸入$ git status


$git status可以查看倉庫當(dāng)前的狀態(tài)颠悬,上面告訴我們mygit文件被修改過移宅,但是還沒有被提交;

但$ git status不能查看具體被修改的內(nèi)容椿疗,如果不記得上次怎么修改的mygit文件漏峰,可以使用$ git diff命令查看;


-為被刪除的內(nèi)容 +為新增內(nèi)容 白色為未修改內(nèi)容届榄;

使用$ git add mygit.txt將修改過后的文件提交浅乔,沒有任何提示


再次輸入$ git status,最后一行提示將要被修改的文件包括mygit.txt


下一步使用$ git commit -m ”update mygit.txt”提交修改


一個文件被修改,插入一行铝条,刪除一行靖苇;

使用$ git status 查看當(dāng)前狀態(tài)


上面提示告訴你沒有需要提交的修改,工作目錄是干凈的班缰;

要隨時使用git status掌握工作區(qū)狀態(tài)贤壁,如果告訴你有文件被修改過,可以使用$ git diff查看

再次使用修改文件內(nèi)容如下并保存:

Git is a distributed version control system.

Git is free software distributed under the GPL.

$ git add mygit.txt埠忘;

$ git commit -m “update twice”脾拆;

使用$ git log可以查看修改文件的信息(從近到遠(yuǎn)),如下:


也可使用$ git log --pretty=oneline,結(jié)果如下:


后面為commit -m“”引號中的說明(所以前面說到最好輸入有意義的內(nèi)容)莹妒,前面為commit id名船,即為版本號(如下圖);表示為當(dāng)前版本旨怠;上一個版本為HEAD^,上上個版本為HEAD^^渠驼,上100個版本為HEAD100個^。鉴腻。迷扇。(HEAD-100)

使用$ git reset --hard HEAD^ 回退到上一個版本:


使用$ cat mygit.txt查看當(dāng)前版本內(nèi)容為上一版本內(nèi)容:


而你的文件里面也會變成這樣:


使用$ git log查看百揭,發(fā)現(xiàn)最新版本已經(jīng)被刪除:


如果第二天你突然又想恢復(fù)到前面最新的版本,這是你發(fā)現(xiàn)你已經(jīng)找不到這個版本的commit id蜓席;你可以使用:$ git reflog


然后 $ git reset --hard 9899562


使用 $ cat mygit.txt 然后你的文件也會變成這樣:


四信峻、管理修改

將mygit文件修改,添加兩段內(nèi)容:

Git is a distributed version control system.

Git is free software distributed under the GPL.

Git has a mutable index called stage.

Git tracks changes.

依次使用$ cat mygit.txt ; $ git add mygit.txt ; $ git status輸出如下內(nèi)容:


然后再次修改mygit文件:

Git is a distributed version control system.

Git is free software distributed under the GPL.

Git has a mutable index called stage.

Git tracks changes of files.

輸入$ cat mygit.txt 輸出:


使用$ git commit -m “change threetimes” 提交修改瓮床,然后查看狀態(tài)$ git status:


此處提示有未提交的修改balabala

輸入$ git diff HEAD --mygit.txt 查看工作區(qū)(文件)和版本庫(.git隱藏文件)中最新版本的區(qū)別:


此時文件中是這樣:


而版本庫中是這樣:


可見第二次修改并沒有被提交盹舞,因為git版本庫分為暫存區(qū)和master分支,HEAD為指向master分支的指針即當(dāng)前版本的指針隘庄,使用git修改文件時踢步,git add是將文件添加到暫存區(qū),而git commit -m是將暫存區(qū)的修改提交到master分支丑掺;

第二次修改時未add到暫存區(qū)获印,所以不會被提交。

所以正確的操作方式應(yīng)該是:

第一次修改->add->第二次修改->add->commit街州;

五兼丰、撤銷修改

git撤銷修改分兩種,第一種是沒有add到暫存區(qū)唆缴,第二種是已經(jīng)add到暫存區(qū)的鳍征,下面我們在mygit文件中添加一行(可用cat 命令查看):

Git is a distributed version control system.

Git is free software distributed under the GPL.

Git has a mutable index called stage.

Git tracks changes of files.

oh shit.

此時修改未被add,可使用$ git checkout -- mygit.txt面徽,這樣修改就被撤銷掉了:


如果修改后的文件已經(jīng)被add艳丛,但沒有commit,此時可使用$ git reset HEAD mygit.txt將文件從暫存區(qū)的修改撤銷掉趟紊,如圖1倒數(shù)第二行提示氮双,$ git reset HEAD mygit.txt 后使用第一步的$ git checkout -- mygit.txt,即可將文件修改撤銷霎匈,如圖2:


六戴差、刪除文件

首先在工作區(qū)新建一個delete.txt文件,并且add commit:


使用rm delete.txt命令刪除文件铛嘱,此時你在工作區(qū)中已經(jīng)看不到此文件暖释,但是你使用git status命令,會出現(xiàn)如下提示:


此時分兩種情況弄痹,誤刪或者確認(rèn)刪除:

如果是誤刪可使用$ git checkout -- delete.txt 饭入,同時你發(fā)現(xiàn)文件回到了工作區(qū):


如果確定要刪除此文件在rm mygit.txt 之后輸入 git rm mygit.txt 然后commit提交:


七、Github遠(yuǎn)程倉庫

首先注冊一個github賬號肛真,進(jìn)入setting中的SSH KEY頁面,在git bash中輸入cd ~/.ssh查看是否有.ssh文件爽航,如果有蚓让,輸入ls -a會輸出(下圖)乾忱,然后使用$ clip? <? ~/.ssh/id_rsa.pub,將文件內(nèi)容復(fù)制到剪切板历极,如果沒有.ssh文件窄瘟,輸入$ ssh-keygen -t rsa -C "youremail@example.com"(郵箱地址),然后一路回車趟卸,出現(xiàn)下圖2:

按照前面操作執(zhí)行:


在github SSH KEY頁面中隨便輸入一個title蹄葱,然后右鍵點擊粘貼,提交锄列,然后github遠(yuǎn)程倉庫就配置成功了:


點擊創(chuàng)建一個新的倉庫图云,名字設(shè)為learngit,其他默認(rèn)設(shè)置邻邮,點擊創(chuàng)建:


根據(jù)github提示在本地learngit倉庫輸入如下命令:

$ git remote add origin git@github.com:lxh597/learngit.git(lxh597改為你的github賬號名竣况,用于關(guān)聯(lián)遠(yuǎn)程庫);origin為遠(yuǎn)程庫名字筒严,git默認(rèn)丹泉;

然后:git push -u origin master


第一次push會出現(xiàn)提示:輸入yes就ok了:


然后你的github上就會出現(xiàn)你上傳的文件了:


說明:git push實際上是把當(dāng)前分支master推送到遠(yuǎn)程,第一次推送master分支時鸭蛙,加上-u參數(shù)摹恨,git不但會把本地master分支推送到遠(yuǎn)程新的master分支,還會講其關(guān)聯(lián)起來娶视,后面的推送或者拉區(qū)就可以簡化命令睬塌;

現(xiàn)在只要本地做了提交,就可以通過$ git push origin master 把本地master分支推送到github

八歇万、遠(yuǎn)程克隆

登陸github創(chuàng)建一個新的倉庫揩晴,取名warehouse,勾選下方自動生成一個readme文件:


輸入$ git clone git@github.com:lxh597/warehouse.git(注意修改賬號名)贪磺,cd進(jìn)入查看:


九硫兰、分支管理

當(dāng)你開發(fā)一個新功能而又不能在短時間內(nèi)完成,這時你又不能提交未完成的文件寒锚,因為這樣可能會使別人無法正常工作劫映,如果代碼全部寫完再進(jìn)行提交,又可能會有丟失進(jìn)度的風(fēng)險刹前;

你可以創(chuàng)建一個屬于你自己的分支泳赋,別人看不到,想提交就提交喇喉,等你把工作做完祖今,再把這個分支合并到原來的分支上,這樣既安全又不影響他人工作;

使用$ git checkout -b dev(創(chuàng)建一個名為dev的分支并切換至dev分支)千诬,相當(dāng)于$ git branch dev耍目,$ git checkout dev;使用$ git branch 查看當(dāng)前分支:


在README文件中添加一行代碼徐绑,然后add commit 提交:


切換回master分支:git checkout master邪驮,然后使用git merge dev將dev合并到當(dāng)前分支,然后使用git branch -d dev刪除dev分支:


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末傲茄,一起剝皮案震驚了整個濱河市毅访,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌盘榨,老刑警劉巖喻粹,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異较曼,居然都是意外死亡磷斧,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進(jìn)店門捷犹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來弛饭,“玉大人,你說我怎么就攤上這事萍歉÷滤蹋” “怎么了?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵枪孩,是天一觀的道長憔晒。 經(jīng)常有香客問我,道長蔑舞,這世上最難降的妖魔是什么拒担? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮攻询,結(jié)果婚禮上从撼,老公的妹妹穿的比我還像新娘。我一直安慰自己钧栖,他們只是感情好低零,可當(dāng)我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著拯杠,像睡著了一般掏婶。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上潭陪,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天雄妥,我揣著相機與錄音最蕾,去河邊找鬼。 笑死茎芭,一個胖子當(dāng)著我的面吹牛揖膜,可吹牛的內(nèi)容都是我干的誓沸。 我是一名探鬼主播梅桩,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼拜隧!你這毒婦竟也來了宿百?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤洪添,失蹤者是張志新(化名)和其女友劉穎垦页,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體干奢,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡痊焊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了忿峻。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片薄啥。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖逛尚,靈堂內(nèi)的尸體忽然破棺而出垄惧,到底是詐尸還是另有隱情,我是刑警寧澤绰寞,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布到逊,位于F島的核電站,受9級特大地震影響滤钱,放射性物質(zhì)發(fā)生泄漏觉壶。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一件缸、第九天 我趴在偏房一處隱蔽的房頂上張望铜靶。 院中可真熱鬧,春花似錦停团、人聲如沸旷坦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽秒梅。三九已至,卻和暖如春舌胶,著一層夾襖步出監(jiān)牢的瞬間捆蜀,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留辆它,地道東北人誊薄。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像锰茉,于是被迫代替她去往敵國和親呢蔫。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,592評論 2 353

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