轉載請註明出處:http://blog.csdn.net/li0978/article/details/52072880
首先說明一下git和svn的最重要的區別:git屬於分佈式代碼託管系統,而svn屬於集中式。git會在每臺電腦上構建一個本地倉庫,各幹各的互不影響,即使遠程倉庫莫名損壞了也不怕,因爲每一個隊員都有一個倉庫。使用git在編輯文檔和代碼時是不需要聯網的,而svn卻不行。等等諸如此類多個優點,所以git成爲現今大衆選擇的主流代碼託管系統。
準備工作:
1.下載安裝git客戶端
windows用戶請下載 http://msysgit.github.com/
mac用戶請下載 http://code.google.com/p/tortoisegit/
2.註冊github賬戶
https://github.com/
配置SSH公鑰:
這一步是爲了在安全環境下訪問git遠程倉庫,一個公鑰只能認證一個用戶,而一個用戶卻可以擁有多個公鑰。另外git除了可以使用ssh協議來被訪問,還可以以https協議去訪問,不過後者必須要設置用戶名和密碼,每次訪問必須要驗證用戶名和密碼,提交代碼時相對比較繁瑣。
1.打開git客戶端,輸入ssh-keygen -t rsa -C “[email protected]”,( 註冊的郵箱),接下來點擊enter鍵即可(也可以輸入密碼)。
2.本地打開 id_rsa.pub 文件(或執行 $cat id_rsa.pub ),複製其中全部內容粘貼到github中設置界面的ssh公鑰添加處,名字隨便設。
3.驗證ssh公鑰是否添加成功,在git客戶端下接着輸入:ssh -T [email protected],回車就會看到:You’ve successfully authenticated, but GitHub does not provide shell access 。這就表示已成功連上github。
遠程倉庫與本地倉庫建立連接:
1.現在github添加創建一個項目,名字,描述,建議寫清楚,不論共享還是私密,隊員剛接觸的時候也算有一點幫助。另外可以添加一個readme文件,將來裏面可以存一些關於項目的介紹之類的說明,下邊的兩項一個是添加.gitignore文件(接下來說明),一個是開放源代碼說明。(根據需求選擇添加)。最後點擊創建。
$ cat .gitignore
*.[oa] # 忽略所有以 .o 或 .a 結尾的文件
*~ # 忽略所有以波浪符(~)結尾的文件
*.a # 忽略所有 .a 結尾的文件
!lib.a # 但 lib.a 除外
/TODO # 僅僅忽略項目根目錄下的 TODO 文件,不包括 subdir/TODO
build/ # 忽略 build/ 目錄下的所有文件
doc/*.txt # 會忽略 doc/notes.txt 但不包括 doc/server/arch.txt
2.接下來我們要在本地建一個本地倉庫。採用cd 定位到我們的項目地址。採用"git init "命令給這個項目創建一個本地倉庫。
3.遠程倉庫和本地倉庫都建好了,我們要將兩個倉庫建立連接。採用“git remote add origin [email protected]:yourName/yourRepo.git”中間的origin 是默認的別名,也可以設成我們自己規定的別名,不過以後提交代碼要用“push 自己的別名 分支”提交了,另外git爲了便於操作可以採用快捷鍵tab來實現指令的補全功能。
4.驗證是否連接成功,我們可以查看當前的我們建立的倉庫 “git remote -v”,這裏有兩個倉庫,一個fetch(要抓取遠程倉庫有的,但本地倉庫沒有的信息,可以運行"git fetch yourRepo",“yourRepo”來自你github上ssh地址,這裏就是指代那個地址。),一個push.
fetch和pull的不同之處:
fetch是將遠程倉庫的某個分支拉倒本地倉庫,但是並不合併,目的是查看遠程和本地代碼哪些不同,這樣更安全一些,最後再合併,這裏的合併是指本地倉庫與本地項目的合併。
Git fetch origin master
git log -p master..origin/master
git merge origin/master
pull是直接將遠程的某個分支的代碼拉到本地倉庫,並且將本地倉庫與本地的項目進行合併。
提交代碼
git默認規則是每次提交代碼之前要先從遠程倉庫將代碼拉下來來保持遠程倉庫和本地倉庫的統一,採用“git pull origin master(分支名)”指令。接下來我們就可以向遠程倉庫提交代碼了,採用“git status”查看提交哪些文件。可以一條一條添加“git add 文件名”,也可以全部添加“git add -A”,這一步只是把工作區的文件添加到緩衝區,然後提交到本地倉庫“git commit -am '本次提交標示'”,接下來我們提交遠程“git push origin master(分支名)”,這就搞定了!
平時使用
cd pwd 查看當前文件夾地址。
cd D:/ 定位到D盤。
cd D:/android 定位到D盤下android文件夾。
cd../ 返回上個目錄。
ls 查看當前目錄下的所有文件。
2.必要時可切換分支,如果無法切換,一般是因爲當前項目沒有提交完整。
git checkout "要切換的分支名"
(假如分支已經變成B)
3.如果切換的分支是你自己的分支,那麼切換後你本地項目就會更新到最新的代碼。因爲你的本地倉庫之前已經存在這個分支的代碼了。
如果想切換別人的分支(這裏其實應該不叫分支了,分支只針對自己)就要遠程把代碼pull 下來一份。
git pull origin "遠程的分支名"
4.此時我們就可以繼續編寫代碼了 (分支B)
每次做一個功能就提交一次。
git status 檢查本地項目哪些還沒有提交本地倉庫
git add -A 提交所有文件到暫存區(並進行文件跟蹤)
git commit -am "本次修改的標示" 將已跟蹤的文件存到暫存區並提交的本地倉庫。如果沒有add -A操作僅僅是將項目中原有跟蹤的文件提交,新增的文件沒有跟蹤不會提交。
git status 再次檢查是否完全提交到本地倉庫
假如上一步向本地倉庫仍有一部分沒有提交到本地倉庫。git status的時候會顯示出來的。那麼我們就一個一個進行再次提交。
git add “文件名1 文件名2” 中間用空格隔開。 //添加提交的文件
git commit -am "本次修改的標示" //提交到本地倉庫
git status //再看一下提交的狀態是否全部提交
一切都提交完了,這個功能也做完了,或者也該下班了,那我們就就把他提交到遠程分支上吧。
git push origin "B(遠程的分支名)" 提交到遠程倉庫。
5.打代碼,提交代碼,打代碼,提交代碼...終於B分支要完成的功能都完成了,此時我們可以把他合併到主分支了。“git merge branchname“這個命令把分支"branchname"合併到了當前分支裏面。
git工作簡圖:
常用命令:
1. $ git init 初始化本地倉庫(或者新建本地倉庫)
2. $ git remote [本地倉庫別名] [遠程倉庫地址] 本地倉庫與遠程倉庫建立連接,本地倉庫別名不設系統默認用“origin”代替。
3. $ git remote -v 查看當前建立有幾個倉庫,一般有兩個。一個 fitch(允許遠程代碼拉下來,但是不與本地項目合併),一個push。
4. $git status 檢查本地項目哪些還沒有提交本地倉庫
5. $ git add test.txt 提交一個文件到暫存區 (並進行文件跟蹤)
$ git commit -m "本次提交的標示" 提交暫存區的內容到本地倉庫
6. $git add -A 提交本地項目的所有文件到暫存區(並進行文件跟蹤)
$git commit -am “本次提交的標示” 將跟蹤的文件提交到暫存區,並將暫存區的內容提交到本地倉庫,沒有跟蹤不會提交的這就需要上邊的git add -A來跟蹤所有。
7. $ git diff HEAD -- readme.txt 查看本次與上次修改的不同
8. $ git checkout -- readme.txt 撤銷工作區的修改。
9. 注意“checkout”和 “checkout --”的區別。 前者是切換分支,後者是撤銷修改。
$ git checkout -- readme.txt 撤銷對readme.txt的修改。
10. $ git reset HEAD readme.txt 取消暫存區的readme.txt的追蹤。
11. $ git rm test.txt 然後 $ git commit -m "remove test.txt" 從版本庫中刪除某個文件。
12. $ git mv readme.txt readhe.txt 然後 $ git commit -m "rename readme.txt" 將版本庫中的readme.txt文件改名爲readhe.txt。
13 $ git log 按提交時間列出所有的更新,最近的更新排在最上面
$ git log -p -2 展開顯示最近兩次提交的差異。
$ git log --stat 顯示簡要的增改行數統計
$ git log --pretty=oneline 每次提交都顯示一行,當有多次提交時便於查閱。
14 $ git commit --amend 重新提交暫存區的內容。(當某次向本地倉庫提交後發現少提交一些文件,這時我們可以重新提交,如下,其實我們只是提交了一次)
用法:$ git commit -m 'initial commit'
$ git add forgotten_file
$ git commit--amend
15 $ git clone [email protected]:run/Test.git 從其他地方克隆一個項目到本地,可以先確定本地路徑,再clone下來。
16 $ git fatch [分支名] 從某個分支抓取數據與本地項目進行比較。
17 $ git push origin 從本地倉庫推送到遠程倉庫。
18 $ git remote show [分支名] 查看遠程倉庫的詳細信息。
19 $ git remote rename [老分支名稱] [新分支名稱] 重命名某個分支的名字
20 $ git remote rm [分支名] 移除某個分支的內容。
21 $ git tag -a v1.4 -m 'my version is v1.4' 創建標籤,v1.4是標籤名字,-m後邊的是標籤的說明。
$ git tag v1.4 創建輕量級的標籤。
$ git tag 顯示所有標籤
$ git tag -l 'v1.4.2.*' 模糊查詢所有v1.4.2開頭的標籤
$ git show v1.4 顯示標籤爲v1.4的版本信息。
$ git push origin v1.4 將標籤發送到遠端服務器
$ git push orign --tags 一次性將所有的標籤發送到遠端服務器。
參考:
廖雪峯git教程:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000