GIT常用命令

一. 安裝git:

安裝完成后進(jìn)入git界面的dos然后輸入
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
這一步是用來記錄我的名字和email地址的。

注意:

git config命令的--global參數(shù),用了這個參數(shù)掏颊,表示你這臺機(jī)器上所有的Git倉庫都會使用這個配置瑞眼,當(dāng)然也可以對某個倉庫指定不同的用戶名和Email地址 萎战。

二. 創(chuàng)建一個版本庫:

      $ mkdir learngit   //創(chuàng)建一個新的文件夾该酗,名字叫l(wèi)earngit
      $ cd learngit       //進(jìn)入learngit文件夾
      $ touch readme.txt   //創(chuàng)建readme.txt
      $ pwd                  //顯示版本庫的當(dāng)前目錄
      /Users/michael/learngit

$ git touch _posts/README.md可以在下一級的文件夾創(chuàng)建文件

Windows系統(tǒng)請確保目錄名(包括父目錄)不包含中文碍现。
$ git init把這個目錄變成Git可以管理的倉庫
目錄下會生成一個.git的文件悠砚,這是一個默認(rèn)隱藏的文件晓勇。
$ ls -ah命令可以看到。

三. 把文件放到目錄里面只需兩步:

$ git add readme.txt     //用命令git add告訴Git把文件添加到倉庫哩簿;
$ git commit -m "wrote a readme file"  //用命令git commit告訴Git把文件提交到倉庫宵蕉。

記住:github不能推送空文件夾


四. 查看命令

$ git log     //顯示從最近到最遠(yuǎn)的提交日志节榜。
$ git log --pretty=oneline
  3628164fb26d48395383f8f31179f24e0882e1e0 append GPL
  ea34578d5496d7dd233c827ed32a8cd576c5ee85 add distributed
  cb926e7ea50ad11b8f9e909c05226233bf755030 wrote a readme file
//大串字符是commit的id
$ git reflog     //記錄你的每一次命令
$ cat readme.txt   //查看文件內(nèi)容

五. 回退版本命令

$ git reset --hard HEAD^  //把Git退到上一個版本羡玛,
$ git reset --hard HEAD~100  //回退到第上100個版本
$ git reset --hard 3628164通過commit的id來查找版本
  • HEAD指向的版本就是當(dāng)前版本,因此宗苍,Git允許我們在版本的歷史之間穿梭稼稿,使用命令git reset --hard commit_id薄榛。
  • 穿梭前,用git log可以查看提交歷史让歼,以便確定要回退到哪個版本敞恋。
  • 要重返未來,用git reflog查看命令歷史谋右,以便確定要回到未來的哪個版本硬猫。
$git diff HEAD -- readme.txt  查看工作區(qū)和版本庫里面最新版本的區(qū)別 
撤銷修改有兩種:
  • 沒有add(添加)的修改
  • 相當(dāng)于只是工作區(qū)修改了用$ git checkout -- readme.txt // 丟棄工作區(qū)的修改
  • add(添加了)的修改分兩步來撤銷
  • $git reset HEAD readme.txt //是先撤銷暫存區(qū)的add
  • 然后撤銷工作區(qū)的修改 $git checkout readme.txt

遇到git退不出的界面的情況用esc或者q或者wq或者是ctrl+d


六. 分支的問題:

  • 新創(chuàng)建一個分支叫dev。

$git branch dev   // 這是創(chuàng)建一個dev改执。
 $git checkout dev  //切換到dev的分支啸蜜。

也可以簡寫成一個命令:$git checkout -b dev

  • 查看分支

    $git branch //來查看當(dāng)前分支的情況。
    git branch會列出所有的分支辈挂,當(dāng)前的分支是帶有*標(biāo)志的那個衬横。
  • 合并分支

$git merge dev     //合并指定的分支到當(dāng)前的分支上面。
 $git branch -d dev   //刪除名字叫dev的分支
git解決沖突:如果出現(xiàn)合并沖突的情況终蒂,需要手動解決沖突蜂林。然后再添加,推送到本地的git庫拇泣。

$git log --graph --pretty=oneline --abbrev-commit //這句話的意思是顯示git的合并圖噪叙。

注意:

通常合并分支時,git會用fast forward模式挫酿。但這種模式下构眯。刪除分之后,會丟掉分支的信息早龟,如果禁用fast forward 模式惫霸。git就會在merge時生成一個新的commit,這樣葱弟,從分支歷史上就可以看到分支的信息壹店。

例如:

開發(fā)bug分支時,當(dāng)你正在dev上面開發(fā)時芝加,有一個緊急的bug需要修復(fù)硅卢,這時候可以用:
$git stash //將當(dāng)前的工作現(xiàn)場儲藏起來等以后恢復(fù)現(xiàn)場后繼續(xù)工作。

然后再切換到master的分支上藏杖。創(chuàng)建一個名字叫issue-101的分支将塑。
$git checkout -b issue-101
然后開始修復(fù)bug,修復(fù)好之后蝌麸,切換到master分支上面点寥,合并分支。然后刪除issue-101的分支来吩。

$git checkout master    
$git merge --no-ff -m "merge bug fix 101" issue-101     
$git branch -d issue-101

最后敢辩,切換到dev的分支繼續(xù)干活蔽莱。
$git checkout dev

恢復(fù)現(xiàn)場:(兩種方法)

$git stash list //用來查看工作現(xiàn)場的存貯列表

  1. $git stash apply恢復(fù),但是恢復(fù)之后戚长,stash內(nèi)容并不刪除盗冷,需要用
    $git stash drop來刪除
  2. 可以用$git stash pop,在恢復(fù)的同時同廉,把stash內(nèi)容也刪除了仪糖。

開發(fā)feature-vulcan分支。沒有合并的分支不能直接刪除迫肖,可以強(qiáng)制用$git branch -D feature-vulcan

七. 關(guān)于git遠(yuǎn)程倉庫的問題:

  • 創(chuàng)建SSH Key
    $ ssh-keygen -t rsa -C "1143205094@qq.com"
    然后一直回車乓诽,
    之后在用戶主目錄下面找到id_rsa.pub公鑰。
    登陸github咒程,把公鑰的內(nèi)容粘貼到ssh keys里面。
  • 添加遠(yuǎn)程庫讼育,創(chuàng)建一個遠(yuǎn)程的版本庫帐姻,記住不要創(chuàng)建readme.md文件。然后關(guān)聯(lián)本地的庫和遠(yuǎn)程庫
  • 關(guān)聯(lián):$git remote add origin git@github.com:flshers/gitlink.git添加后
  • 推送:$git push -u origin master //第一次推送要加上-u的參數(shù)
    之后推送就是$git push origin master就行了
  • 克隆遠(yuǎn)程庫到本地:
    $ git clone git@github.com:flshers/github1.git

  • 多人協(xié)作:克隆完成時就是把分支對應(yīng)起來了 遠(yuǎn)程的倉庫默認(rèn)的名字是origin

  • $git remote //來查看遠(yuǎn)程倉庫的默認(rèn)名字或者用$git remote -v //查看詳細(xì)的信息

  • 推送用$git push origin master //主分支或者是$git push origin dev //dev分支

模擬小伙伴在同一臺電腦的不同盤符目錄下克隆


  1. 克隆完成后發(fā)現(xiàn)奶段,默認(rèn)情況下饥瓷,小伙伴只能看到本地的master分支。
    要在dev上面開發(fā)痹籍,就必須創(chuàng)建遠(yuǎn)程origin的dev分支到本地呢铆,
    $git checkout -b origin/dev(遠(yuǎn)程有dev分支)然后在dev上修改,再時不時的push一下蹲缠。

  2. 小伙伴開發(fā)完成之后棺克,我也修改了相應(yīng)的dev文件準(zhǔn)備提交推送,發(fā)現(xiàn)不能推送线定。原因是我與小伙伴的提交有沖突了娜谊,我必須先把小伙伴的dev拉下來,用pull斤讥,然后合并一下纱皆。

  3. pull也會失敗,因為是沒有指定本地的dev與遠(yuǎn)程origin/dev分支的鏈接芭商,根據(jù)提示設(shè)置dev 和origin/dev的鏈接$git branch --set-uostream dev origin/dev

  4. 然后pull一下派草,合并會有沖突,需要手動解決一下铛楣,然后再push一下近迁。

八. 標(biāo)簽管理

  • 創(chuàng)建標(biāo)簽:先切換到要打標(biāo)簽的分支上面。
$git tag v1.0    //打上標(biāo)簽
$git tag     //查看所有的標(biāo)簽蛉艾。
$git show v0.9來查看標(biāo)簽的詳細(xì)信息
$git tag -a v0.1 -m "version0.1 released" 3628164  //帶有說明的標(biāo)簽钳踊,用-a指定標(biāo)簽名衷敌,-m指定說明文字。
  • 操作標(biāo)簽:

  • $git tag -d v0.1 //標(biāo)簽打錯了拓瞪,也可以刪除缴罗;
    標(biāo)簽只會存儲在本地,不會自動推送到遠(yuǎn)程祭埂,所以打錯的標(biāo)簽可以在本地的刪除

  • 推送標(biāo)簽到遠(yuǎn)程

$git push origin v0.1 //推送一個標(biāo)簽到遠(yuǎn)程面氓;
`$git push origin --tags //或者推送所有的沒有推送到遠(yuǎn)程的本地標(biāo)簽
  • 刪除遠(yuǎn)程標(biāo)簽
  1. $git tag -d v0.9先從本地刪除
  2. $git push origin :refs/tags/v0.9從遠(yuǎn)程刪除
  • 添加文件夾$git add .

  • 配置git 讓git顯示顏色 $git config --global color.ui true

九. 忽略特殊文件:

在工作區(qū)的根目錄下面創(chuàng)建一個特殊的.gitignore文件,然后把要忽略的文件名填進(jìn)去蛆橡。git就會自動忽略這些文件舌界。

  • 有時候添加不了文件,可能是被.gitignore忽略了泰演,可以強(qiáng)制添加$git add -f App.class
  • 或者你發(fā)現(xiàn)忽略文件寫的有問題呻拌,需要找出來。$git check-ignore -v App.class
  • 給命令配置別名:$git config --global alias.st status //其中--global是一個全局的參數(shù)
    放上資源忽略文件github
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末睦焕,一起剝皮案震驚了整個濱河市藐握,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌垃喊,老刑警劉巖猾普,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異本谜,居然都是意外死亡初家,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進(jìn)店門乌助,熙熙樓的掌柜王于貴愁眉苦臉地迎上來溜在,“玉大人,你說我怎么就攤上這事眷茁】挥荆” “怎么了?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵上祈,是天一觀的道長培遵。 經(jīng)常有香客問我,道長登刺,這世上最難降的妖魔是什么籽腕? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮纸俭,結(jié)果婚禮上皇耗,老公的妹妹穿的比我還像新娘。我一直安慰自己揍很,他們只是感情好郎楼,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布万伤。 她就那樣靜靜地躺著,像睡著了一般呜袁。 火紅的嫁衣襯著肌膚如雪敌买。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天阶界,我揣著相機(jī)與錄音虹钮,去河邊找鬼。 笑死膘融,一個胖子當(dāng)著我的面吹牛芙粱,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播氧映,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼春畔,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了岛都?” 一聲冷哼從身側(cè)響起拐迁,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎疗绣,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體铺韧,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡多矮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了哈打。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片塔逃。...
    茶點(diǎn)故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖料仗,靈堂內(nèi)的尸體忽然破棺而出湾盗,到底是詐尸還是另有隱情,我是刑警寧澤立轧,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布格粪,位于F島的核電站,受9級特大地震影響氛改,放射性物質(zhì)發(fā)生泄漏帐萎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一胜卤、第九天 我趴在偏房一處隱蔽的房頂上張望疆导。 院中可真熱鬧,春花似錦葛躏、人聲如沸澈段。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽败富。三九已至悔醋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間囤耳,已是汗流浹背篙顺。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留充择,地道東北人德玫。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像椎麦,于是被迫代替她去往敵國和親宰僧。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評論 2 345

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