Git和GitHub一直在用,但是沒(méi)有詳細(xì)學(xué)習(xí)過(guò),只會(huì)幾個(gè)簡(jiǎn)單的命令,做一些提交上傳的操作。這幾天公司沒(méi)項(xiàng)目,比較閑,就把Git的原理和命令詳細(xì)看了一遍。
Git的官方網(wǎng)站是 http://git-scm.com/
《Git Pro》是一本好書(shū),詳細(xì)覆蓋了Git的方方面面,所有你遇到的關(guān)于Git的內(nèi)容都可以在上面找到。而且它免費(fèi),有中文版和英文版
書(shū)是好書(shū),就是太厚。花時(shí)間。而且如果沒(méi)有任何Git的操作體驗(yàn),直接看這本書(shū)頭會(huì)比較大。所以我看了會(huì)就沒(méi)看了。在網(wǎng)上找到另外一篇教程,詳細(xì)介紹了Git的日常使用,不羅嗦,講的都是項(xiàng)目中經(jīng)常用到的功能。
教程作者是
廖雪峰
。你可以在這里找到這篇教程 教程地址</br>
他還寫(xiě)了一個(gè)配套的iOS App。有興趣的也可以下載支持。
這邊把學(xué)到的知識(shí)做個(gè)總結(jié):
以下內(nèi)容來(lái)自原上面提到的教程
基本命令
- git init :初始化倉(cāng)庫(kù)
- git add <filename> :添加未跟蹤文件到暫存區(qū) 或 添加修改的文件到暫存區(qū)
- git rm <filename> :將文件從git跟蹤列表中刪除
- git commit -m 'commit log' :提交一個(gè)版本到git
- git log :查看所有的提交歷史記錄
- git status :查看當(dāng)前git的狀態(tài)
- git checkout -- <file> :撤銷工作目錄文件的修改
- git reset HEAD <file> :取消暫存
版本管理
- git reset --hard HEAD^ :版本回退上一個(gè)版本
- git reset --hard HEAD^^ :版本回退上上個(gè)版本
- git reset --hard HEAD~100 :版本回退前一百個(gè)版本
- git reflog :查看操作記錄,可以找到所有歷史commit
- git diff HEAD -- <file> :命令可以查看工作區(qū)和版本庫(kù)里面最新版本的區(qū)別
遠(yuǎn)程管理
- git clone git@github.com:michaelliao/gitskills.git :將遠(yuǎn)程庫(kù)下載下來(lái)
- git remote add origin git@server-name:path/repo-name.git :添加遠(yuǎn)程庫(kù)地址
- git push -u origin master :提交的遠(yuǎn)程庫(kù)
- git remote -v:查看遠(yuǎn)程庫(kù)信息
- git push origin branch-name:從本地推送分支,如果推送失敗,先用git pull抓取遠(yuǎn)程的新提交
- git checkout -b branch-name origin/branch-name:在本地創(chuàng)建和遠(yuǎn)程分支對(duì)應(yīng)的分支,本地和遠(yuǎn)程分支的名稱最好一致
- git branch --set-upstream branch-name origin/branch-name:建立本地分支和遠(yuǎn)程分支的關(guān)聯(lián)
- git pull:從遠(yuǎn)程抓取分支,如果有沖突,要先處理沖突
分支
- 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>:刪除分支
- git log --graph:命令可以看到分支合并圖
在實(shí)際開(kāi)發(fā)中,我們應(yīng)該按照幾個(gè)基本原則進(jìn)行分支管理: 首先,master分支應(yīng)該是非常穩(wěn)定的,也就是僅用來(lái)發(fā)布新版本,平時(shí)不能在上面干活; 那在哪干活呢?干活都在dev分支上,也就是說(shuō),dev分支是不穩(wěn)定的,到某個(gè)時(shí)候,比如1.0版本發(fā)布時(shí),再把dev分支合并到master上,在master分支發(fā)布1.0版本; 你和你的小伙伴們每個(gè)人都在dev分支上干活,每個(gè)人都有自己的分支,時(shí)不時(shí)地往dev分支上合并就可以了。
標(biāo)簽 Tag
- git tag <name>:用于新建一個(gè)標(biāo)簽
- git tag -a <tagname> -m "blablabla..."可以指定標(biāo)簽信息
- git tag -a v0.1 -m "version 0.1 released" 3628164
- git tag:可以查看所有標(biāo)簽
- git push origin <tagname>:可以推送一個(gè)本地標(biāo)簽
- git push origin --tags:可以推送全部未推送過(guò)的本地標(biāo)簽
- git push origin :refs/tags/<tagname>:可以刪除一個(gè)遠(yuǎn)程標(biāo)簽
- git tag -d <tagname>:可以刪除一個(gè)本地標(biāo)簽