常用git命令

git


1. git init

使用git init命令枉层,把一個(gè)目錄變成Git可以管理的倉(cāng)庫(kù)闻察。創(chuàng)建成功纬纪,會(huì)提示創(chuàng)建了一個(gè)空的倉(cāng)庫(kù)(empty Git repository)揍移,該文件夾下回有一個(gè)隱藏的.git文件。

2. git add

使用git add命令呆盖,將文件添加到倉(cāng)庫(kù)拖云,該命令實(shí)際上是一個(gè)腳本命令,沒(méi)有任何提示应又,說(shuō)明添加成功宙项。例如:git add readme.md

3. git commit

使用git commit命令,將文件提交到倉(cāng)庫(kù)株扛。一般增加 -m 來(lái)添加一些提交說(shuō)明尤筐。例如:git commit -m wrote a readme file

4. git status

使用git status查看倉(cāng)庫(kù)當(dāng)前的狀態(tài),比如哪些文件被修改過(guò)

5. git diff

使用git diff查看文件具體的修改內(nèi)容

6. git log

git log命令可以顯示從最近到最遠(yuǎn)的提交日志洞就。如果嫌輸出的信息太多盆繁,可以使用git log --pretty=oneline來(lái)查看日志信息

7. git reset

Git必須知道當(dāng)前版本是哪個(gè)版本,在Git中旬蟋,用 HEAD 表示當(dāng)前版本油昂,上一個(gè)版本就是HEAD^,上上一個(gè)版本就是HEAD^^,當(dāng)然往上100個(gè)版本寫(xiě)100個(gè)^比較容易數(shù)不過(guò)來(lái)冕碟,所以寫(xiě)成HEAD~100稠腊。

現(xiàn)在,我們要把當(dāng)前版本回退到上一個(gè)版本鸣哀,就可以使用git reset命令:
git reset --hard HEAD^

8. git relog

現(xiàn)在,你回退到了某個(gè)版本吞彤,當(dāng)想恢復(fù)到新版本怎么辦我衬?找不到新版本的commit id怎么辦?Git提供了一個(gè)命令 git reflog 用來(lái)記錄你的每一次命令:

$ git reflog
ea34578 HEAD@{0}: reset: moving to HEAD^
3628164 HEAD@{1}: commit: append GPL
ea34578 HEAD@{2}: commit: add distributed
cb926e7 HEAD@{3}: commit (initial): wrote a readme file

9. git checkout

如果你在readme.txt中加入了一行文件饰恕,又感覺(jué)不好挠羔,你可以刪除新加的,恢復(fù)到原來(lái)的埋嵌。Git會(huì)告訴你破加,git checkout -- file 可以丟棄工作區(qū)的修改,例如:

$ git checkout -- readme.txt

命令git checkout -- readme.txt意思就是雹嗦,把readme.txt文件在工作區(qū)的修改全部撤銷(xiāo)范舀,這里有兩種情況:

  1. 一種是readme.txt自修改后還沒(méi)有被放到暫存區(qū),現(xiàn)在了罪,撤銷(xiāo)修改就回到和版本庫(kù)一模一樣的狀態(tài)锭环;
  2. 一種是readme.txt已經(jīng)添加到暫存區(qū)后,又作了修改泊藕,現(xiàn)在辅辩,撤銷(xiāo)修改就回到添加到暫存區(qū)后的狀態(tài)。

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

現(xiàn)在來(lái)看幾種情況,如何撤銷(xiāo)修改

  1. 當(dāng)你改亂了工作區(qū)某個(gè)文件的內(nèi)容讼呢,想直接丟棄工作區(qū)的修改時(shí)撩鹿,用命令git checkout -- file。

  2. 當(dāng)你不但改亂了工作區(qū)某個(gè)文件的內(nèi)容吝岭,還添加到了暫存區(qū)時(shí)三痰,想丟棄修改,分兩步:

第一步用命令git reset HEAD file窜管,就回到了1散劫;
第二步按1操作。
  1. 已經(jīng)提交了不合適的修改到版本庫(kù)時(shí)幕帆,想要撤銷(xiāo)本次提交获搏,參考版本回退一節(jié),不過(guò)前提是沒(méi)有推送到遠(yuǎn)程庫(kù)。

10. git rm

確實(shí)需要從版本庫(kù)中刪除文件常熙,那就用命令git rm刪掉纬乍,并且git commit

11. git remote add...建立遠(yuǎn)程倉(cāng)庫(kù)連接

將本地倉(cāng)庫(kù)和遠(yuǎn)程倉(cāng)庫(kù)進(jìn)行連接的命令為:

$ git remote add origin git@github.com:onlyone/learngit.git

請(qǐng)千萬(wàn)注意:把上面的onlyone替換成你 自己的GitHub賬戶名裸卫,否則仿贬,你在本地關(guān)聯(lián)的就是我的遠(yuǎn)程庫(kù),關(guān)聯(lián)沒(méi)有問(wèn)題墓贿,但是你以后推送是推不上去的茧泪,因?yàn)槟愕腟SH Key公鑰不在我的賬戶列表中。

添加后聋袋,遠(yuǎn)程庫(kù)的名字就是origin队伟,這是Git默認(rèn)的叫法,也可以改成別的幽勒,但是origin這個(gè)名字一看就知道是遠(yuǎn)程庫(kù)嗜侮。

注意:要關(guān)聯(lián)一個(gè)遠(yuǎn)程庫(kù),使用命令:

git remote add origin git@server-name:path/repo-name.git

12. git push

將本地庫(kù)的所有內(nèi)容推送到遠(yuǎn)程倉(cāng)庫(kù)上:

$ git push -u origin master

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

注意:要關(guān)聯(lián)一個(gè)遠(yuǎn)程庫(kù)干毅,使用命令

git remote add origin git@server-name:path/repo-name.git宜猜;

關(guān)聯(lián)后,使用命令git push -u origin master第一次推送master分支的所有內(nèi)容硝逢;

此后姨拥,每次本地提交后,只要有必要渠鸽,就可以使用命令git push origin master推送最新修改叫乌。

13. git clone

使用git clone克隆一個(gè)遠(yuǎn)程倉(cāng)庫(kù),例如:

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

14. 創(chuàng)建分支

首先創(chuàng)建分支dev徽缚,然后切換到dev分支:

$ git checkout -b dev
Switched to a new branch 'dev'

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

$ git branch dev
$ git checkout dev
Switched to branch 'dev'

然后,用git branch命令查看當(dāng)前分支:

$ git branch
* dev
  master

git branch命令會(huì)列出所有分支,當(dāng)前分支前面會(huì)標(biāo)一個(gè) * 號(hào)。

15. 合并分支

dev 分支的工作成果合并到 master 分支上窟她,git merge命令用于合并指定分支到當(dāng)前分支:

$ git merge dev
Updating d17efd8..fec145a
Fast-forward
 readme.txt |    1 +
 1 file changed, 1 insertion(+)

注意: 上面的Fast-forward信息才避,Git告訴我們婿奔,這次合并是 “快進(jìn)模式”,也就是直接把master指向dev的當(dāng)前提交,所以合并速度非常快盐类,但是并不是每次合并都是快進(jìn)模式。

16. 刪除分支

合并完成后,就可以放心地刪除dev分支了:

$ git branch -d dev
Deleted branch dev (was 5659891).

刪除后在跳,查看branch枪萄,就只剩下master分支了:

$ git branch
* master

小結(jié):

  • 查看分支:git branch
  • 創(chuàng)建分支:git branch <name>
  • 切換分支:git checkout <name>
  • 創(chuàng)建+切換分支:git checkout -b <name>
  • 合并某分支到當(dāng)前分支:git merge <name>
  • 刪除分支:git branch -d <name>

17. 解決沖突

在兩個(gè)分支上修改同一個(gè)文件時(shí),造成了修改的不一致猫妙,在使用 git merge <name>時(shí)瓷翻,就不能使用 快進(jìn)模式 進(jìn)行合并,而是需要手動(dòng)解決每個(gè)沖突。當(dāng)手動(dòng)解決完沖突之后:

  • 使用git add <fileName>添加沖突文件
  • 使用git commit 提交解決后的沖突文件
  • 使用git log --graph --pretty=oneline --abbrev-commit 查看已經(jīng)解決的分支合并圖
  • 使用git branch -d <branchName> 刪除分支

18. 推送分支

要查看遠(yuǎn)程庫(kù)的信息割坠,用 git remote 或者 git remote -v 顯示更加詳細(xì)的信息逻悠。

推送分支,就是把該分支上的所有本地提交推送到遠(yuǎn)程庫(kù)韭脊。推送時(shí),要指定本地分支单旁,這樣沪羔,Git就會(huì)把該分支推送到遠(yuǎn)程庫(kù)對(duì)應(yīng)的遠(yuǎn)程分支上:

git push origin master

如果要推送其他分支,比如dev象浑,就改成

git push origin dev

19. 多人協(xié)作

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

  • 首先蔫饰,可以試圖用git push origin branch-name推送自己的修改;
  • 如果推送失敗愉豺,則因?yàn)檫h(yuǎn)程分支比你的本地更新篓吁,需要先用 git pull 試圖合并;
  • 如果合并有沖突蚪拦,則解決沖突杖剪,并在本地提交;
  • 沒(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次兆。

20.Git取消跟蹤某個(gè)文件

git rm --cached FILENAME

如果是文件夾

git rm -r  --cached  FOLDER/.
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市锹锰,隨后出現(xiàn)的幾起案子芥炭,更是在濱河造成了極大的恐慌,老刑警劉巖恃慧,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件园蝠,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡糕伐,警方通過(guò)查閱死者的電腦和手機(jī)砰琢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人陪汽,你說(shuō)我怎么就攤上這事训唱。” “怎么了挚冤?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵况增,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我训挡,道長(zhǎng)澳骤,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任澜薄,我火速辦了婚禮为肮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘肤京。我一直安慰自己颊艳,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布忘分。 她就那樣靜靜地躺著棋枕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪妒峦。 梳的紋絲不亂的頭發(fā)上重斑,一...
    開(kāi)封第一講書(shū)人閱讀 51,292評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音肯骇,去河邊找鬼窥浪。 笑死,一個(gè)胖子當(dāng)著我的面吹牛笛丙,可吹牛的內(nèi)容都是我干的寒矿。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼若债,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼符相!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起蠢琳,我...
    開(kāi)封第一講書(shū)人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤啊终,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后傲须,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體蓝牲,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年泰讽,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了例衍。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片昔期。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖佛玄,靈堂內(nèi)的尸體忽然破棺而出硼一,到底是詐尸還是另有隱情,我是刑警寧澤梦抢,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布般贼,位于F島的核電站,受9級(jí)特大地震影響奥吩,放射性物質(zhì)發(fā)生泄漏哼蛆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一霞赫、第九天 我趴在偏房一處隱蔽的房頂上張望腮介。 院中可真熱鬧,春花似錦端衰、人聲如沸萤厅。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至楼誓,卻和暖如春玉锌,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背疟羹。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工主守, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人榄融。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓参淫,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親愧杯。 傳聞我的和親對(duì)象是個(gè)殘疾皇子涎才,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

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

  • 下面Git 命令清單部分來(lái)自廖雪峰,部份來(lái)自其他各處收集力九。幾個(gè)專用名詞的譯名如下耍铜。 Workspace:工作區(qū) I...
    亂塵閱讀 284評(píng)論 0 1
  • 1. 安裝 Github 查看是否安裝git: $ git config --global user.name "...
    Albert_Sun閱讀 13,661評(píng)論 9 163
  • git常用命令 GIT常用命令備忘:http://stormzhang.com/git/2014/01/27/gi...
    新篇章閱讀 8,478評(píng)論 1 26
  • 1.git的安裝 1.1 在Windows上安裝Git msysgit是Windows版的Git,從https:/...
    落魂灬閱讀 12,663評(píng)論 4 54
  • 風(fēng)還在呼呼不停!雨水混著眼淚一路狂奔抵乓。 付出總讓人上癮伴挚!保護(hù)著弱小與無(wú)動(dòng)于衷靶衍。 心碎的樣子蒼老,風(fēng)箏斷線或許會(huì)真逍...
    善良的老虎閱讀 164評(píng)論 0 0