git使用之一——git的基本使用

南無大乘妙法蓮華經發表於2015-10-14

部落格: 安卓之家
微博: 追風917
CSDN: 蔣朋的家
簡書: 追風917
部落格園: 追風917

git使用之一——git的基本使用
git使用之二——.gitignore檔案詳解
git使用之三——.git資料夾詳解
git使用之四——windows下github桌面版的安裝
git使用之五——Github上fork專案後與原專案保持同步
git使用之六——github協同工作的Fork+Pull Request
git使用之七——Android Studio下git的正確使用

git初識


git是一種分散式版本控制系統,有linux核心開發者,著名的黑客 Linus Torvalds 大神編寫。比傳統的svn優勢明顯,詳細請參考這裡:百度百科:git

幾個常用名詞:

1 init:新建一個Git管理專案。

2 add:新增新的檔案(資料夾)到Git專案中,如果新增資料夾,該資料夾下所有檔案將被包含。同時可以使用rm,mv從git專案中刪除或是重新命名檔案(資料夾)。

3 commit:提交到倉庫,告訴Git你想要記錄現在的操作,Git會保留一個當前修改過檔案的快照。

4 reset:如果你正在編輯的檔案亂了,可以選擇從上一次的commit的點重新開始編輯,通常是選擇恢復到上一個編輯點。

5 check out:一般是在branch間切換。

6 branch:分支,master就是其中一個。

7 merge:合併分支,如果我正在編輯一個版本a,別人在編輯版本b,我們想把兩個版本合成一個,就可以用merge。當然,合的過程中,有時候會檢出有哪些地方不一樣,詢問到底要保留哪一個,需要手動處理不同的地方。事實上,這更像一個審查的過程。

8 diff:找出兩個文件或目錄的不同。

9 revert:回滾到指定的commit的點。

和遠端倉庫的互動:

10 clone:從遠端倉庫得到整個專案的拷貝。

11 pull:類似與SVN中的update動作,如果你之前clone得到某專案的一份拷貝,用pull可以更新到最新版本。相當於fetch + merge

12 push:把本地倉庫的這份拷貝push到伺服器。

13 HEAD:這就是一個指標,可以有任意指向,預設指向master分支的最後一次commit的點,這貨控制著後面的發展,可以使用checkout更改HEAD指向。

14 master:這是系統預設生成的本地分支,當然你可以自定義,這只是方便操作而已

15 working tree:剛check out過來,並未修改的檔案,也就是你在對哪些檔案進行操作。

16 index(staging area):有修改但是還沒有commit的檔案,新加進來的檔案也在這裡,就是暫存區咯

17 git directory(repository):修改並commit後,一個檔案快照被推送到這裡,被儲存起來,就是本地倉庫

易混淆名詞對比

1 log和status:log是檢視commit的歷史;status是檢視是否有檔案未commit,沒有的話,當前的Git project是clean的。

2 reset和revert:首先,‘reset –hard’到某commit點後,用log檢視,該點後所有commit都看不到了,檔案被恢復到commit點時的樣子;而revert到某commit點之後,用log檢視,可以看到多了一個commit點,檢視檔案內容,被恢復到commit點。還有,必須是project clean時,才能執行revert。

git中檔案的幾種狀態

1 unstaged:git倉庫中沒有此檔案的相關記錄

2 modified:git倉庫中有這個檔案的記錄,並且此檔案當前有改動

3 staged:追加,刪除或修改的檔案被暫時儲存,這些追加,刪除和修改並沒有提交到git倉庫

4 commited:追加或修改的檔案被提交到本地git倉庫(git倉庫中大部分都是這種檔案,所以git status不顯示這些檔案)

git全域性部署


$ git config --global user.name "your name"  
$ git config --global user.email "your_email@xx.com"

本地建立ssh key


命令:

ssh-keygen -t rsa -C "your_email@xx.com"   

完成後會要求確認路徑和輸入密碼,我們這使用預設的一路回車就行。成功的話會在~/下生成.ssh資料夾。進去,開啟id_rsa進去,開啟id_rsa.pub,這就是我們需要的ssh key。回到github,進入Account

新增key到github


開啟github,進入Account Settings,左邊選擇SSH Keys,Add SSH Key,title隨便填,貼上key。為了驗證是否成功,在git bash下輸入:

$$ ssh -T git@github.com

如果是第一次的會提示是否continue,輸入yes就會看到:You’ve successfully authenticated, but GitHub does not provide shell access 。這就表示已成功連上github。

提交、上傳


1 建立倉庫

到你的github頁面,建立一個倉庫,比如HelloWorld

2 提交

本地新建一個資料夾HelloWorld(和你的github裡的倉庫名稱一致),進入該資料夾,右鍵git bash,初始化git,新增檔案並提交commit

$ git init //初始化git,建立.git資料夾
$ git add README.md //建立一個待提交的檔案README.md
$ echo "hello world!" >> README.md  //檔案裡寫點東西,問候下美好的世界
$ git commit . -m "first commit" //提交檔案,.是當前目錄,就是提交所有檔案

3 上傳

$ git remote add origin git@github.com:yourName/yourRepo.git
$ git push -u origin master //可能需要輸入使用者名稱密碼之類哦

origin可以是任意名字哦,是你遠端倉庫名,當然你可以新增多個哦,push的時候指定一個就可以。後面的yourName和yourRepo表示你再github的使用者名稱和剛才新建的倉庫,加完之後進入.git資料夾,開啟config檔案,這裡會多出一個remote “origin”內容,這就是剛才新增的遠端地址,也可以直接修改config來配置遠端地址。

當然後面的地址是ssh形式,前面沒有部署金鑰的話是出錯的哦,你也可以用https形式來上傳:

$ git remote add origin https://github.com/yourName/yourRepo.git

這樣你就會在你的github對應的倉庫下看到對應的檔案了哦。
git push命令會將本地倉庫推送到遠端伺服器。git pull命令則相反。

$ git pull -u origin master //從遠端伺服器更新到本地倉庫,相當於git fetch + git merge

修改完程式碼後,使用git status可以檢視檔案的差別,使用git add 新增要commit的檔案,也可以用git add -i來智慧新增檔案。之後git commit提交本次修改,git push上傳到github。

.gitignore檔案


見我之前的博文:

tag標籤


tag的最主要作用是記錄軟體版本號,比如版本號更新的時候可以建一個“v2.0”、“v3.1”之類的標籤,這樣在以後回顧的時候會比較方便。tag的使用很簡單,主要操作有:檢視tag、建立tag、驗證tag以及共享tag。

$ git tag v0.1 //給上一次提交新增標籤v0.1
$ git tag -d v0.1 //刪除標籤v0.1
$ git tag v2.4 9aaa93e //給版本號9aaa93e,這是一個索引雜湊值,新增標籤v2.4
$ git tag //檢視所有本地tag

$ git push origin tag v0.5 //push本地標籤v0.5到遠端倉庫
$ git push --tags  // push所有本地標籤到遠端倉庫
$ git fetch --tags //把所有的遠端倉庫的tag拉到本地倉庫
$ git fetch origin tag v0.5 //把遠端倉庫origin主機的tag v0.5拉到本地倉庫
$ git push origin --delete tag v0.5 //刪除遠端倉庫的v0.5的tag
$ git push origin :refs/tags/v0.5 //push一個空的tag到v0.5,相當於刪除遠端倉庫的v0.5的tag

git分支

$ git branch jp //建立一個新的分支jp並切換到jp分支,-b引數就是切換到新建的分支
$ git checkout -b jp //新建分支並切換到jp分支
$ git checkout jp //切換到分支jp
$ git branch -av //檢視分支,-a檢視所有分支,-v包括分支索引和提交資訊
$ git branch -D jp //刪除分支jp
$ git branch -m jp jp1017//重新命名,把jp分支重新命名為jp1017
$ git merge jp //合併jp分支

常用遠端倉庫


1 github:程式碼多的很
2 gitcafe:有私有庫,但是收費
3 oschina:私有庫免費,穩定快速,贊,大力推薦。
4 coding.net:私有庫免費
5 gitlab:國內速度超級慢

繼續深造


1 git官方中文文件
2 廖雪峰老師git教程
3 易百網git教程

enjoy!

悅分享,越快樂^_^

歡迎交流,轉載請註明出處,謝謝!

相關文章