-
Notifications
You must be signed in to change notification settings - Fork 359
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
unify the vocabulary and del useless space
将 origin 统一译为“远程版本库”,删除多余空白
- Loading branch information
Showing
1 changed file
with
22 additions
and
20 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,15 +1,15 @@ | ||
[[_引用表达式]] | ||
[[_refspec]] | ||
=== 引用表达式(Refspec) | ||
|
||
纵观全书,我们已经使用过一些诸如远程分支到本地引用的简单映射方式,但是还有更复杂的。 | ||
假设你添加了这样一个远程: | ||
假设你添加了这样一个远程版本库: | ||
|
||
[source,console] | ||
---- | ||
$ git remote add origin https://github.com/schacon/simplegit-progit | ||
---- | ||
|
||
上面的命令将在你的 `.git/config` 文件中添加一个小节,指定了远程的名称 (`origin`),远程仓库的URL地址,和用于获取操作的引用表达式(Refspec): | ||
上面的命令将在你的 `.git/config` 文件中添加一个小节,指定了远程版本库的名称(`origin`)、URL 地址、以及用于获取的引用表达式(Refspec): | ||
|
||
[source,ini] | ||
---- | ||
|
@@ -18,7 +18,9 @@ $ git remote add origin https://github.com/schacon/simplegit-progit | |
fetch = +refs/heads/*:refs/remotes/origin/* | ||
---- | ||
|
||
引用表达式(refspec)的格式是由一个可选的 `+` 号和 `<src>:<dst>` 组成,这里 `<src>` 是远程上的引用格式, `<dst>` 是将要记录在本地的引用格式。可选的 `+` 号告诉 Git 即使不能快速演进,也要强制更新引用格式。默认情况下引用表达式(refspec)会由 `git remote add` 命令自动生成, Git 获取服务器中 `refs/heads/` 下面的所有引用,并将它写入到本地的 `refs/remotes/origin/`中。 所以,如果服务器上有一个 `master` 分支,即可在本地通过下面这种方式来访问分支记录: | ||
引用表达式的格式是由一个可选的 `+` 号和 `<src>:<dst>` 组成,这里 `<src>` 是远程上的引用格式, `<dst>` 是将要记录在本地的引用格式。可选的 `+` 号告诉 Git 即使不能快速演进,也要强制更新引用格式。 | ||
|
||
默认情况下引用表达式由 `git remote add` 命令自动生成, Git 获取服务器中 `refs/heads/` 下面的所有引用,并将它写入到本地的 `refs/remotes/origin/` 中。 所以,如果服务器上有一个 `master` 分支,即可在本地通过下面这种方式来访问分支记录: | ||
|
||
[source,console] | ||
---- | ||
|
@@ -29,21 +31,21 @@ $ git log refs/remotes/origin/master | |
|
||
上面的三个命令作用相同,因为 Git 把它们都扩展成 `refs/remotes/origin/master`。 | ||
|
||
如果想让 Git 每次只拉取远程的 `master` 分支,而不是远程的所有分支,可以把 `fetch` 行修改为: | ||
如果想让 Git 每次只拉取远程的 `master` 分支,而不是所有分支,可以把 fetch 行修改为: | ||
|
||
[source] | ||
---- | ||
fetch = +refs/heads/master:refs/remotes/origin/master | ||
---- | ||
|
||
这只是针对远程的 `git fetch` 操作的默认引用表达式(refspec)。而如果只想做一次该操作,也可以在命令行上指定引用表达式(refspec)。拉取远程的 `master` 分支到本地的 `origin/mymaster` 分支,可以运行: | ||
这只是针对远程的 `git fetch` 操作的默认引用表达式。如果只想执行一次该操作,可以在命令行指定引用表达式。将远程的 `master` 分支拉取到本地的 `origin/mymaster` 分支,可以运行: | ||
|
||
[source,console] | ||
---- | ||
$ git fetch origin master:refs/remotes/origin/mymaster | ||
---- | ||
|
||
也可以指定多个引用表达式(refspec)。像下面的命令行,可以一次拉取远程的多个分支: | ||
你也可以指定多个引用表达式。使用命令行,你可以按照如下的方式拉取多个分支: | ||
|
||
[source,console] | ||
---- | ||
|
@@ -54,9 +56,9 @@ From [email protected]:schacon/simplegit | |
* [new branch] topic -> origin/topic | ||
---- | ||
|
||
在这个例子中,`master` 分支的拉取操作被拒绝,因为该分支不是一个可以快速演进的引用。可以通过在引用表达式(refspec)之前使用 `+` 号来强制更新。 | ||
在这个例子中,`master` 分支的拉取操作被拒绝,因为该分支不是一个可以快速演进的引用。可以通过在引用表达式之前使用 `+` 号来强制更新。 | ||
|
||
也可以在配置文件中指定多个引用表达式(refspec)。如果想在每次获取时都包括 `master` 和 `experiment` 分支,添加如下两行: | ||
你也可以在配置文件中指定多个引用表达式。如果想在每次获取时都包括 `master` 和 `experiment` 分支,添加如下两行: | ||
|
||
[source,ini] | ||
---- | ||
|
@@ -73,8 +75,8 @@ From [email protected]:schacon/simplegit | |
fetch = +refs/heads/qa*:refs/remotes/origin/qa* | ||
---- | ||
|
||
但可以使用命名空间(或文件路径)来达到这个目的。 | ||
如您有一个QA团队,他们推送一系列分支。您每次只想获取 `master` 分支和QA团队的所有分支,可以使用如下配置段落: | ||
但可以使用命名空间(或目录)来达到这个目的。 | ||
如果你有一个 QA 团队,推送了一系列分支,而你只要获取 master 和 QA 团队的这些分支,那么,你可以使用如下的配置: | ||
|
||
[source,ini] | ||
---- | ||
|
@@ -84,19 +86,20 @@ fetch = +refs/heads/qa*:refs/remotes/origin/qa* | |
fetch = +refs/heads/qa/*:refs/remotes/origin/qa/* | ||
---- | ||
|
||
如果工作流很复杂,有QA团队推送的分支、开发人员推送的分支、还有集成团队推送并且在远程分支上协作,可以为他们创建各自的命名空间解决类似问题。 | ||
如果工作流很复杂,有 QA 团队推送的分支、开发人员推送的分支、还有集成团队推送并且在远程分支上协作,可以为他们创建各自的命名空间解决类似问题。 | ||
|
||
[[_推送_引用表达式]] | ||
==== 推送引用表达式(refspec) | ||
[[_pushing_refspecs]] | ||
==== 推送引用表达式 | ||
|
||
采用命名空间的方式来获取分支是个好主意,但QA组成员如何将他们的分支开始推送到 `qa/` 空间里面的呢?答案是通过引用表达式(refspec)的推送来完成。如果QA团队想把他们的 `master` 分支推送到远程服务器的 `qa/master` 分支上,可以运行: | ||
采用命名空间的方式来获取分支是个好主意,但 QA 团队一开始如何将他们的分支推送到 `qa/` 命名空间呢?答案是通过引用表达式的推送来完成。 | ||
如果 QA 团队想把他们的 `master` 分支推送到远程服务器的 `qa/master` 分支上,可以运行: | ||
|
||
[source,console] | ||
---- | ||
$ git push origin master:refs/heads/qa/master | ||
---- | ||
|
||
如果他们希望 `Git` 每次运行 `git push origin` 时都如上这样推送,他们可以在配置文件中添加一个 `push` 值: | ||
如果他们希望 Git 每次运行 `git push origin` 时都如上这样推送,他们可以在配置文件中添加一个 `push` 值: | ||
|
||
[source,ini] | ||
---- | ||
|
@@ -106,16 +109,15 @@ $ git push origin master:refs/heads/qa/master | |
push = refs/heads/master:refs/heads/qa/master | ||
---- | ||
|
||
同样的,这就会让 `git push origin` 默认就把本地的 `master` 分支推送到远程的 `qa/master` 分支上。 | ||
同样的,这会让 `git push origin` 默认把本地 `master` 分支推送到远程 `qa/master` 分支。 | ||
|
||
==== Deleting References | ||
==== 删除引用 | ||
|
||
您也可以使用引用表达式(refspec)来删除远程服务器的引用,运行如下命令: | ||
你也可以使用引用表达式来删除远程服务器的引用,运行如下命令: | ||
|
||
[source,console] | ||
---- | ||
$ git push origin :topic | ||
---- | ||
|
||
因为引用表达式(refspec)的格式是 `<src>:<dst>`, 所以把 `<src>` 留空的意思就是把远程的 `topic` 分支定义为空值,也就是删除它。 | ||
因为引用表达式的格式是 `<src>:<dst>`, 所以把 `<src>` 留空的意思就是把远程的 `topic` 分支定义为空值,也就是删除它。 |