git的簡單實用案例

git初識


git是一種分佈式版本控制系統,有linux內核開發者,著名的黑客 Linus Torvalds 大神編寫。

幾個常用名詞:

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 "[email protected]"

本地創建ssh key


命令:

ssh-keygen -t rsa -C "[email protected]"

完成後會要求確認路徑和輸入密碼,我們這使用默認的一路回車就行。成功的話會在~/下生成.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 [email protected]

如果是第一次的會提示是否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 [email protected]: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分支
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章