git 常用命令

git.png

常用命令

  • git init
    把當(dāng)前目錄初始化為倉(cāng)庫(kù)根吁,多了一個(gè).git的目錄,這個(gè)目錄是Git來(lái)跟蹤管理版本庫(kù)的
    也不一定必須在空目錄下創(chuàng)建Git倉(cāng)庫(kù)端盆,選擇一個(gè)已經(jīng)有東西的目錄也是可以的
  • git add 文件名
    告訴Git怀骤,把文件添加到倉(cāng)庫(kù)
  • git commit -m "這里寫(xiě)注釋"
    告訴Git费封,把文件提交到倉(cāng)庫(kù),-m后面輸入的是本次提交的說(shuō)明蒋伦,可以輸入任意內(nèi)容弓摘,當(dāng)然最好是有意義的
  • git status
    git status命令可以讓我們時(shí)刻掌握倉(cāng)庫(kù)當(dāng)前的狀態(tài)
  • git diff
    查看difference,顯示的格式正是Unix通用的diff格式
  • git log
    命令顯示從最近到最遠(yuǎn)的提交日志,版本號(hào)是一個(gè)SHA1計(jì)算出來(lái)的一個(gè)非常大的數(shù)字痕届,用十六進(jìn)制表示
    如果嫌輸出信息太多韧献,看得眼花繚亂的,可以試試加上--pretty=oneline參數(shù)研叫,后面顯示commit時(shí)的備注
    用==HEAD==表示當(dāng)前版本
    上一個(gè)版本就是HEAD锤窑,上上一個(gè)版本就是HEAD,當(dāng)然往上100個(gè)版本寫(xiě)100個(gè)比較容易數(shù)不過(guò)來(lái)蓝撇,所以寫(xiě)成HEAD~100
li.tianzeng@litianzeng MINGW64 /f/git (master)
$ git log
commit 9b378c6671d5d975d80e621f047140660f8be617 (HEAD -> master)
Author: ltz150 <ltz150@163.com>
Date:   Sun Oct 28 16:38:53 2018 +0800

    版本3

commit 60f710a986e854da76fe71561c8bfd59979b00e5
Author: ltz150 <ltz150@163.com>
Date:   Sun Oct 28 16:37:54 2018 +0800

    版本2

commit b73a42c36aac49acc8eb9bfe4d0d29aba2fd093a
Author: ltz150 <ltz150@163.com>
Date:   Sun Oct 28 16:35:20 2018 +0800

    版本1

  • git reset --hard HEAD^ 恢復(fù)到上一個(gè)版本
    從最近的一個(gè)commit恢復(fù)
    上一個(gè)版本就是HEAD果复,上上一個(gè)版本就是HEAD陈莽,當(dāng)然往上100個(gè)版本寫(xiě)100個(gè)比較容易數(shù)不過(guò)來(lái)渤昌,所以寫(xiě)成HEAD~100

  • git reset --hard 9b378(版本號(hào)前幾位) 恢復(fù)到指定版本
    版本號(hào)沒(méi)必要寫(xiě)全,前幾位就可以了走搁,Git會(huì)自動(dòng)去找独柑。當(dāng)然也不能只寫(xiě)前一兩位,因?yàn)镚it可能會(huì)找到多個(gè)版本號(hào)私植,就無(wú)法確定是哪一個(gè)了忌栅。

  • git reset HEAD <file>
    可以把暫存區(qū)的修改撤銷(xiāo)掉(unstage),重新放回工作區(qū)
    用HEAD時(shí)曲稼,表示最新的版本

  • git reflog
    記錄你的每一次歷史命令

Git跟蹤并管理的是修改索绪,而非文件

  • git checkout --文件名
    把文件在工作區(qū)的修改全部撤銷(xiāo),這里有兩種情況:

一種是文件自修改后還沒(méi)有被放到暫存區(qū)贫悄,現(xiàn)在瑞驱,撤銷(xiāo)修改就回到和版本庫(kù)一模一樣的狀態(tài);

一種是文件已經(jīng)添加到暫存區(qū)后窄坦,又作了修改唤反,現(xiàn)在,撤銷(xiāo)修改就回到添加到暫存區(qū)后的狀態(tài)鸭津。

總之彤侍,就是讓這個(gè)文件回到最近一次git commit或git add時(shí)的狀態(tài)。

  • git rm 文件名
    刪除版本庫(kù)里面的文件逆趋,git checkout -- 文件名盏阶,把版本庫(kù) 的文件恢復(fù)到工作區(qū)

  • git remote add origin git@github.com:id/倉(cāng)庫(kù)名.git
    把一個(gè)已有的本地倉(cāng)庫(kù)與github關(guān)聯(lián)

  • git push
    把當(dāng)前分支推送

  • git clone github地址
    從地址克隆倉(cāng)庫(kù)

master和其他分支名字 才是指向提交的,闻书,HEAD指向的就是當(dāng)前分支

  • git checkout -b 分支名字
    命令加上-b參數(shù)表示創(chuàng)建并切換名斟,相當(dāng)于以下兩條命令:
    git branch 分支名 #創(chuàng)建分支
    git checkout 分支名 #切換分支
  • git branch
    命令會(huì)列出所有分支吴汪,當(dāng)前分支前面會(huì)標(biāo)一個(gè)*號(hào)。
li.tianzeng@litianzeng MINGW64 /f/git (master)
$ git checkout -b fenzhi
Switched to a new branch 'fenzhi'

li.tianzeng@litianzeng MINGW64 /f/git (fenzhi)
$ git branch
* fenzhi
  master

  • git checkout master # 切換到主分支
  • git merge命令用于合并指定分支到當(dāng)前分支
    當(dāng)前在master上蒸眠,指定fenzhi合并到mastershang
li.tianzeng@litianzeng MINGW64 /f/git (fenzhi)
$ git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.

li.tianzeng@litianzeng MINGW64 /f/git (master)
$ git merge fenzhi
Updating a8baa73..49f9e1b
Fast-forward
 number.txt | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

2018-10-28-22-03-13.png
  • git branch -d fenzhi
    git branch -D <name>強(qiáng)行刪除漾橙。
    刪除fenzhi,建議合并后刪除

當(dāng)Git無(wú)法自動(dòng)合并分支時(shí)楞卡,就必須首先解決沖突霜运。解決沖突后,再提交蒋腮,合并完成淘捡。

解決沖突就是把Git合并失敗的文件手動(dòng)編輯為我們希望的內(nèi)容,再提交池摧。

用git log --graph命令可以看到分支合并圖焦除。

分支策略

  1. master分支應(yīng)該是非常穩(wěn)定的,也就是僅用來(lái)發(fā)布新版本作彤,平時(shí)不能在上面干活
  2. 干活都在dev分支上膘魄,也就是說(shuō),dev分支是不穩(wěn)定的
  3. 每個(gè)人都有自己的分支竭讳,時(shí)不時(shí)地往dev分支上合并就可以了
  4. 合并分支時(shí)创葡,加上--no-ff參數(shù)就可以用普通模式合并,合并后的歷史有分支绢慢,能看出來(lái)曾經(jīng)做過(guò)合并灿渴,而fast forward合并就看不出來(lái)曾經(jīng)做過(guò)合并
2018-10-28-22-41-48.png
  • git stash
    把當(dāng)前工作現(xiàn)場(chǎng)“儲(chǔ)藏”起來(lái),等以后恢復(fù)現(xiàn)場(chǎng)后繼續(xù)工作

  • git stash list
    顯示保存的工作是現(xiàn)場(chǎng)

  • 恢復(fù)現(xiàn)場(chǎng)3種方式

    • git stash apply恢復(fù)胰舆,但是恢復(fù)后骚露,stash內(nèi)容并不刪除
    • git stash pop,恢復(fù)的同時(shí)把stash內(nèi)容也刪了
  • git remote
    git remote -v顯示更詳細(xì)的信息
    要查看遠(yuǎn)程庫(kù)的信息 ,遠(yuǎn)程倉(cāng)庫(kù)的默認(rèn)名稱是origin

推送分支

  • git push origin master
    git push origin dev
  • master分支是主分支缚窿,因此要時(shí)刻與遠(yuǎn)程同步棘幸;
  • dev分支是開(kāi)發(fā)分支,團(tuán)隊(duì)所有成員都需要在上面工作滨攻,所以也需要與遠(yuǎn)程同步够话;
  • bug分支只用于在本地修復(fù)bug,就沒(méi)必要推到遠(yuǎn)程了光绕,除非老板要看看你每周到底修復(fù)了幾個(gè)bug女嘲;
  • feature分支是否推到遠(yuǎn)程,取決于你是否和你的小伙伴合作在上面開(kāi)發(fā)诞帐。
  • git checkout -b dev origin/dev
    創(chuàng)建遠(yuǎn)程origin的dev分支到本地,這個(gè)命令創(chuàng)建本地dev分支.

  • git branch --set-upstream-to=origin/dev dev
    本地dev分支與遠(yuǎn)程origin/dev分支的鏈接欣尼,根據(jù)提示,設(shè)置dev和origin/dev的鏈接

  • git rebase
    rebase操作可以把本地未push的分叉提交歷史整理成直線;
    rebase的目的是使得我們?cè)诓榭礆v史提交的變化時(shí)更容易愕鼓,因?yàn)榉植娴奶峤恍枰綄?duì)比钙态。

標(biāo)簽tag

  • git tag <tagname>用于新建一個(gè)標(biāo)簽,默認(rèn)為HEAD菇晃,也可以指定一個(gè)commit id册倒;

  • git tag -a <tagname> -m "blablabla..."可以指定標(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閱讀 219,110評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件犹褒,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡大溜,警方通過(guò)查閱死者的電腦和手機(jī)化漆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)钦奋,“玉大人,你說(shuō)我怎么就攤上這事疙赠「恫模” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,474評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵圃阳,是天一觀的道長(zhǎng)厌衔。 經(jīng)常有香客問(wèn)我,道長(zhǎng)捍岳,這世上最難降的妖魔是什么富寿? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,881評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮锣夹,結(jié)果婚禮上页徐,老公的妹妹穿的比我還像新娘。我一直安慰自己银萍,他們只是感情好变勇,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著贴唇,像睡著了一般搀绣。 火紅的嫁衣襯著肌膚如雪飞袋。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,698評(píng)論 1 305
  • 那天链患,我揣著相機(jī)與錄音巧鸭,去河邊找鬼。 笑死麻捻,一個(gè)胖子當(dāng)著我的面吹牛蹄皱,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播芯肤,決...
    沈念sama閱讀 40,418評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼巷折,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了崖咨?” 一聲冷哼從身側(cè)響起锻拘,我...
    開(kāi)封第一講書(shū)人閱讀 39,332評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎击蹲,沒(méi)想到半個(gè)月后署拟,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,796評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡歌豺,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評(píng)論 3 337
  • 正文 我和宋清朗相戀三年推穷,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片类咧。...
    茶點(diǎn)故事閱讀 40,110評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡馒铃,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出痕惋,到底是詐尸還是另有隱情区宇,我是刑警寧澤,帶...
    沈念sama閱讀 35,792評(píng)論 5 346
  • 正文 年R本政府宣布值戳,位于F島的核電站议谷,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏堕虹。R本人自食惡果不足惜卧晓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望赴捞。 院中可真熱鬧逼裆,春花似錦、人聲如沸螟炫。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,003評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至掸屡,卻和暖如春封寞,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背仅财。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,130評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工狈究, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人盏求。 一個(gè)月前我還...
    沈念sama閱讀 48,348評(píng)論 3 373
  • 正文 我出身青樓抖锥,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親碎罚。 傳聞我的和親對(duì)象是個(gè)殘疾皇子磅废,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評(píng)論 2 355

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