本文章是學(xué)習(xí)廖雪峰老師的《GIT教程》的筆記钩述。
一.安裝GIT
因為Git是分布式版本控制系統(tǒng)莽囤,所以,每個機(jī)器都必須自報家門:你的名字和Email地址切距。
$ git config --global user.name "your name"
$ git config --global user.email "your email"
二.創(chuàng)建版本庫
1.第一步朽缎,選擇一個合適的地方,創(chuàng)建一個空目錄
$ mkdir learnGit //創(chuàng)建一個空目錄
$ cd learnGit //進(jìn)入目錄
$ pwd //顯示當(dāng)前所在路徑
顯示結(jié)果:/c/Users/Administrator/learnGit
注:windows環(huán)境下,請確保目錄名(包括父目錄)不包含中文
2.第二步话肖,將該目錄變成GIT可管理的倉庫
$ git init
顯示結(jié)果:Initialized empty Git repository in C:/Users/Administrator/learnGit/.git/
3.第三步北秽,我們就可以在該目錄下添加文件了。
比如我們在該目錄下創(chuàng)建一個 readme.txt文件最筒,內(nèi)容隨意
4.第四步贺氓,把我們新添加的文件添加到GIT倉庫
$ git add readme.txt
顯示結(jié)果:當(dāng)沒有任何提示的時候,說明你提交成功了
5.第五步床蜘,把文件提交到GIT倉庫
$ git commit -m "wrote a readme file" //-m 后面是本次提交的說明
顯示結(jié)果:
[master (root-commit) 93854c9] wrote a readme file
1 file changed, 2 insertions(+)
create mode 100644 readme.txt
三.版本控制
$ git status
注:此命令可以讓我們時刻掌握倉庫當(dāng)前的狀態(tài)辙培,比如修改過文件后,查看當(dāng)前狀態(tài)
$ git diff readme.txt
注:此命令可以讓我們查看readme.txt文件修改過什么
$ git log
注:此命令可以顯示從最近到最遠(yuǎn)的提交日志
$ git reset --hard HEAD^
注:此命令為回退到上一個版本
$ cat readme.txt
注:顯示readme.txt的內(nèi)容
$ git reset --hard 9977218
注:回退之后想再找回最新提交的版本邢锯,只需要找到最新提交產(chǎn)生的commit id扬蕊,即可恢復(fù)最新提交版本
$ git reflog
注:此命令用來記錄你的每一次命令,可用來查找commit id
$ git checkout --readme.txt
注:此命令就是讓readme.txt這個文件回到最近一次git commit或git add時的狀態(tài)
$ git reset HEAD readme.txt
注:此命令可以把暫存區(qū)的修改撤銷掉(unstage)丹擎,重新放回工作區(qū)
$ rm readme.txt
注:用于刪除readme.txt文件
四.遠(yuǎn)程倉庫
第1步:創(chuàng)建SSH Key
在用戶主目錄下尾抑,看看有沒有.ssh目錄,如果有蒂培,再看看這個目錄下有沒有id_rsa和id_rsa.pub這兩個文件再愈,如果已經(jīng)有了,可直接跳到下一步护戳。如果沒有翎冲,打開Shell(Windows下打開Git Bash),創(chuàng)建SSH Key:
$ ssh-keygen -t rsa -C "your email"
注:如果一切順利的話媳荒,可以在用戶主目錄里找到.ssh目錄府适,里面有id_rsa和id_rsa.pub兩個文件,這兩個就是SSH Key的秘鑰對肺樟,id_rsa是私鑰檐春,不能泄露出去,id_rsa.pub是公鑰么伯,可以放心地告訴任何人
第2步:登陸GitHub
打開“Account settings”疟暖,“SSH Keys”頁面,然后田柔,點“Add SSH Key”俐巴,填上任意Title,在Key文本框里粘貼id_rsa.pub文件的內(nèi)容
其他GitHub相關(guān)操作,請戳這里
$ git remote add origin git@github.com:michaelliao/learngit.git
$ git push -u origin master
五.分支管理
$ git branch //查看分支
$ git branch <name> //創(chuàng)建分支
$ git checkout <name> //切換分支
$ git checkout -b <name> //創(chuàng)建+切換分支
$ git merge <name> //合并某分支到當(dāng)前分支
$ git branch -d <name> //刪除分支
Fast forward
$ git merge --no-ff -m "merge with no-ff" dev
注:如果要強(qiáng)制禁用Fast forward模式,Git就會在merge時生成一個新的commit耳峦,這樣洞渤,從分支歷史上就可以看出分支信息
儲存工作區(qū)
$ git stash
注:此命令用于將當(dāng)前工作區(qū)儲藏起來进陡,當(dāng)處理bug的時候靴拱,需要切換分支亭引,這時就需要將當(dāng)前工作區(qū)儲存称开,以便解決bug后將現(xiàn)在的工作區(qū)恢復(fù)
$ git stash list
注:查看工作區(qū)相關(guān)
$ git stash apply //恢復(fù)工作區(qū)糟把,但stash內(nèi)容并不刪除绢涡,需要用$ git stash drop來刪除
$ git stash pop //恢復(fù)工作區(qū)的同時,stash內(nèi)容也被刪除
$ git branch -D <name> //用于刪除一個為被合并過的分支遣疯,強(qiáng)制刪除
多人協(xié)作
$ git remote //查看遠(yuǎn)程庫的信息
$ git remote -v //查看遠(yuǎn)程庫的詳細(xì)信息
$ git push origin master //推送分支
$ git clone git@github.com:michaelliao/learngit.git //抓取分支
$ git checkout -b dev origin/dev //創(chuàng)建遠(yuǎn)程origin的dev分支到本地
$ git pull //把最新的提交從origin/dev抓下來
注:如果git pull提示“no tracking information”雄可,則說明本地分支和遠(yuǎn)程分支的鏈接關(guān)系沒有創(chuàng)建,用命令$ git branch --set-upstream branch-name origin/branch-name
六.標(biāo)簽管理
$ git tag v1.0 //打一個新標(biāo)簽
$ git tag //查看所有標(biāo)簽
$ git tag v0.9 6224937 //根據(jù)commit id打標(biāo)簽
$ git tag -a <tagname> -m "blablabla..." //可以指定標(biāo)簽信息缠犀;
$ git show v0.9 //查看標(biāo)簽信息
$ git tag -s <tagname> -m "blablabla..." //可以用PGP簽名標(biāo)簽数苫;
$ git tag -d v0.1 //刪除標(biāo)簽
$ git push origin v1.0 //推送標(biāo)簽
$ git push origin --tags //一次性推送所有標(biāo)簽
刪除一個遠(yuǎn)程標(biāo)簽
$ git tag -d v0.9 //先刪除本地的標(biāo)簽
$ git push origin :refs/tags/v0.9 //再從遠(yuǎn)程刪除