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页。