資料
首次創(chuàng)建
創(chuàng)建用戶
git config --global user.name "Tony"
git config --global user.email "tony@gmail.com"
進(jìn)入代碼目錄,創(chuàng)建代碼倉(cāng)庫(kù)
git init
添加文件到倉(cāng)庫(kù)
git add AndroidManifest.xml
git add src
git add .
提交
git commit -m "First commit."
忽略文件或目錄:
.gitignore
管理修改歷史
版本號(hào)
在Git中,用HEAD
表示當(dāng)前版本埂软,也就是最新的提交3628164...882e1e0
(注意我的提交ID和你的肯定不一樣)瘟仿,上一個(gè)版本就是HEAD^
感耙,上上一個(gè)版本就是HEAD^^
企垦,當(dāng)然往上100個(gè)版本寫100個(gè)^比較容易數(shù)不過來涎永,所以寫成HEAD~100
斯碌。
HEAD相當(dāng)于一個(gè)指針,指向當(dāng)前的工作于哪個(gè)commit,在你跳轉(zhuǎn)到某個(gè)commit后,HEAD就指向那個(gè)commit,所以速度跳轉(zhuǎn)版本的速度非骋凰溃快.
stage/unstaged
add之后進(jìn)入stage,commit后進(jìn)入branch.
查看歷史提交信息
git log
git log --pretty=oneline --abbrev-commit
如果我們只想查看其中一條記錄,可以在命令中指定該記錄的 id傻唾,并加上-1 參數(shù)表示我們只想看到一行記錄
git log 2e7c0547af28cc1e9f303a4a1126fddbb704281b -1
而如果想要查看這條提交記錄具體修改了什么內(nèi)容投慈, 可以在命令中加入-p參數(shù)
git log 2e7c0547af28cc1e9f303a4a1126fddbb704281b -1 -p
查看狀態(tài)
git status
查看本地文件修改了哪些地方。
git diff src/com/example/providertest/MainActivity.java
回退到某個(gè)版本
撤銷未add過的文件的修改冠骄,就是丟棄所有的修改伪煤。
git checkout -- src/com/example/providertest/MainActivity.java
如果文件add過,先reset凛辣,再checkout:
git reset HEAD src/com/example/providertest/MainActivity.java
git checkout -- src/com/example/providertest/MainActivity.java
如果文件commit過抱既,reset --hard
回退到上一個(gè)版本:
git log
git reset --hard 443ab205fac62b4316ca0f9188cd6b85fbc4a813 // 跳到某個(gè)版本
git reset --hard HEAD^ // 回到上個(gè)版本
前進(jìn)到某個(gè)版本
git reflog // 查看命令歷史,找到你要的commit id,然后用reset跳轉(zhuǎn).
git reset --hard xxxx // 跳到某個(gè)版本
git rm
遠(yuǎn)程協(xié)作
可以這樣說,如果你是一個(gè)人在開發(fā)扁誓,那么使用版本控制工具就遠(yuǎn)遠(yuǎn)無法發(fā)揮出它真正強(qiáng)大的功能防泵。
沒錯(cuò),所有版本控制工具最重要的一個(gè)特點(diǎn)就是可以使用它來進(jìn)行團(tuán)隊(duì)合作開發(fā)蝗敢。每個(gè)人的電腦上都會(huì)有一份代碼捷泞,當(dāng)團(tuán)隊(duì)的某個(gè)成員在自己的電腦上編寫完成了某個(gè)功能后,就將代碼提交到服務(wù)器寿谴,其他的成員只需要將服務(wù)器上的代碼同步到本地锁右,就能保證整個(gè)團(tuán)隊(duì)所有人的代碼都相同的。這樣的話,每個(gè)團(tuán)隊(duì)成員就可以各司其職骡湖,大家共同來完成一個(gè)較為龐大的項(xiàng)目贱纠。
git clone https://xxxxxxxxxxxxxxxx
git push origin master
git fetch origin master
git diff origin/master
git pull origin master(2in1)
git merge origin/master
托管到Git倉(cāng)庫(kù) 步驟
傻瓜式:
首先GitHub上新建repository
-
git clone到本地
target目錄
git clone https://github.com/tony-green/coolweather.git
-
把本地項(xiàng)目的source code拷貝到本地
target目錄
git add . git commit -m "First commit." git push origin master
推送本地git倉(cāng)庫(kù)到遠(yuǎn)程:
git remote add origin git@github.com:michaelliao/learngit.git
git push -u origin master
遠(yuǎn)程clone
git clone git@github.com:michaelliao/gitskills.git
多人協(xié)作
- 查看遠(yuǎn)程庫(kù)信息,使用
git remote -v
响蕴; - 本地新建的分支如果不推送到遠(yuǎn)程谆焊,對(duì)其他人就是不可見的;
- 從本地推送分支浦夷,使用
git push origin branch-name
辖试,如果推送失敗,先用git pull
抓取遠(yuǎn)程的新提交劈狐; - 在本地創(chuàng)建和遠(yuǎn)程分支對(duì)應(yīng)的分支罐孝,使用
git checkout -b branch-name origin/branch-name
,本地和遠(yuǎn)程分支的名稱最好一致肥缔; - 建立本地分支和遠(yuǎn)程分支的關(guān)聯(lián)莲兢,使用
git branch --set-upstream branch-name origin/branch-name
; - 從遠(yuǎn)程抓取分支续膳,使用
git pull
改艇,如果有沖突,要先處理沖突坟岔。
Branch管理
查看有哪些branch:
git branch
git branch –a
創(chuàng)建新branch
git branch version1.0
切換新branch為工作branch
git checkout version1.0
創(chuàng)建并切換分支(2合1命令):
git checkout -b version1.0
merge來自new branch的修改:
git checkout master
git merge version1.0
刪除new branch:
git branch -d version1.0
git branch -D version1.0 // 強(qiáng)制刪除,丟棄修改
stash
stash的作用就是保存該branch的現(xiàn)場(chǎng),該branch的工作目錄用于他用:
git stash
用完后,需要回復(fù)現(xiàn)場(chǎng),接著之前的工作:
git stash list // 查看
git stash apply // 恢復(fù)stash內(nèi)容
git stash drop // 刪除stash內(nèi)容
git stash pop // (以上2合1的命令)
標(biāo)簽管理
tag就是一個(gè)讓人容易記住的有意義的名字谒兄,它跟某個(gè)commit綁在一起。
創(chuàng)建標(biāo)簽:
git tag <name>
git tag v0.9 6224937 // 針對(duì)某個(gè)commit打標(biāo)簽
查看標(biāo)簽:
git tag
git show <tagname>
刪除標(biāo)簽:
git tag -d v0.1
操作:
命令git push origin <tagname>可以推送一個(gè)本地標(biāo)簽社付;
命令git push origin --tags可以推送全部未推送過的本地標(biāo)簽承疲;
命令git tag -d <tagname>可以刪除一個(gè)本地標(biāo)簽;
命令git push origin :refs/tags/<tagname>可以刪除一個(gè)遠(yuǎn)程標(biāo)簽鸥咖。
配置git
$ git config --global color.ui true
$ git config --global alias.st status
$ git config --global alias.co checkout
$ git config --global alias.ci commit
$ git config --global alias.br branch
參考: 配置方法
部署Git站點(diǎn)(tbd)
搭建Git服務(wù)器非常簡(jiǎn)單燕鸽,通常10分鐘即可完成;
要方便管理公鑰啼辣,用Gitosis绵咱;
要像SVN那樣變態(tài)地控制權(quán)限,用Gitolite熙兔。
如何架設(shè)git服務(wù)器? gogsnun