一. 安裝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)場的存貯列表
-
$git stash apply
恢復(fù),但是恢復(fù)之后戚长,stash內(nèi)容并不刪除盗冷,需要用
$git stash drop
來刪除 - 可以用
$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分支
模擬小伙伴在同一臺電腦的不同盤符目錄下克隆
克隆完成后發(fā)現(xiàn)奶段,默認(rèn)情況下饥瓷,小伙伴只能看到本地的master分支。
要在dev上面開發(fā)痹籍,就必須創(chuàng)建遠(yuǎn)程origin的dev分支到本地呢铆,
$git checkout -b origin/dev
(遠(yuǎn)程有dev分支)然后在dev上修改,再時不時的push一下蹲缠。小伙伴開發(fā)完成之后棺克,我也修改了相應(yīng)的dev文件準(zhǔn)備提交推送,發(fā)現(xiàn)不能推送线定。原因是我與小伙伴的提交有沖突了娜谊,我必須先把小伙伴的dev拉下來,用pull斤讥,然后合并一下纱皆。
pull也會失敗,因為是沒有指定本地的
dev
與遠(yuǎn)程origin/dev
分支的鏈接芭商,根據(jù)提示設(shè)置dev 和origin/dev的鏈接$git branch --set-uostream dev origin/dev
然后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)簽
-
$git tag -d v0.9
先從本地刪除 -
$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