git review (四)
git clone克隆
- 用法1:
git clone <repository> <directory>
- 用法2:
git clone --bare <repository> <directory.git>
- 用法3:
git clone --mirror <repository> <directory.git>
用法說明:
- 用法1將repository指向的版本庫創建一個克隆到directory目錄。目錄directory相當於克隆版本庫的工作區,文件都會檢出,版本庫位於工作區目錄下的.git目錄下。
- 用法2和用法3都不包含工作區,直接就是版本庫的內容,這樣的版本庫相當於裸版本庫。一般約定俗成以.git爲後綴
- 用法3區別於用法2在於用法3克隆出的裸版本庫對上游版本庫進行了註冊,這樣可以使用git fetch進行持續同步。
對於上游版本的註冊信息配置等都在.git/config
裏面。
- git的push和pull用法命令:
git push [<remote-reposity> [refspec(冒號表達式前面是本地後面是遠端)]]
git pull [<remote-reposity> [refspec]]
其中refspec是引用表達式。
如果遇到了衝突,可以先pull回來然後再push過去。
實際上git pull
= git fetch
+git merge
解決衝突的方法:
- 手動修改文件,然後
git add -u
git commit
git push
- 藉助圖形化工具
git mergetool
git 里程碑
- 創建的里程碑默認只會在本地版本庫中可見,如果要推送,示例如下:
git push origin mytag
- 使用pull可以獲取新的里程碑,但是里程碑被改變後,不能進行用pull自動更新。必須使用顯示更新:
git pull origin refs/tags/mytag2:refs/tags/mytag2
- 刪除遠程版本庫中的里程碑:
git push <remote_url> :<tagname>
git 分支
git checkout -b <new_branch> [<start_point>]
通過參數實現了創建分支和切換分支兩個動作合二爲一。git push origin user2/i18n:master
用本地user2/i18n分支更新版本庫的master分支git push origin :user2/i18n
刪除遠程user2/i18n分支
git 遠程版本庫
- 爲了能夠在遠程分支
refs/remotes/origin/hello
上進行工作,需要基於遠程分支創建本地分支
git checkout hello
- 但是如果基於本地分支創建另外一個本地分支則沒有分支跟蹤功能,但是可以加
--track
參數:
git checkout --track -b hello-jx hello
- 如果註冊了多個遠程版本庫並希望獲取所有遠程版本庫的更新:
git remote update
- 如果要在遠程版本庫中創建分支,則執行命令:
git push <remote> <new_branch>
- 關於不帶參數的git push和pull過程詳細說明,參見《git權威指南》294頁。