无需显式输入即可从当前原点拉取
Pull from current origin without explicit typing
有没有直接从当前分支拉取而无需显式调用的快捷方式。
例如我检查了一个分支:git checkout mybranch
从我使用的分支中提取 git pull origin mybranch
。是否可以跳过 origin mybranch
部分?问题是,我们的分支机构的名称很长,例如 b_searchsystem_grid
。
可能类似于 git pull origin .
(对于当前分支)。
你可以只做 git pull
并且如果你做了 git push -u origin <branch>
就让它暗示原点,一旦它通过设置你的上游远程使所有未来的 git 拉取基于原点。
我认为重要的是不仅要记住命令,还要理解背后的原因。
Git 分支可以有一个 "upstream branch" 集,这是与远程本地分支对应的分支。必须显式声明此上游分支,因为您可能有多个遥控器。在那种情况下,git 将不知道在您执行 git push
或 git pull
.
时从哪里推或拉到哪里
您可以列出您分支的上游分支:
$ git branch -vv
* testbranch 271404b commit message
master ac7a302 [origin/master] add foo
在这里你看到 testbranch
分支没有上游分支,所以 git 不知道从哪里 push/pull。然而,master 分支确实有一个上游分支(origin/master
),所以当我们输入 git pull
.
时 git 确实知道该做什么
我们可以通过以下几种方式设置上游分支:
git branch --set-upstream-to origin/branchname
git branch -u origin/branchname
(只是一个shorthand)
git push -u origin branchname
(通常更方便)
TL;DR
建立正确的默认值后,您可以 运行 仅 git pull
不带任何参数,但我建议您将其拆分为 git fetch && git merge
,如果这是您想要的。
长
首先,请记住 git pull
仅表示:运行 git fetch
,然后 运行 第二个 Git 命令。第二个命令默认为git merge
,但您可以选择git rebase
。
git fetch
命令需要知道两件事:
从哪里获取?
重要的是,有一个默认值。默认是与当前分支关联的 remote,基于它的 upstream。这两个定义如下。
取什么?
这里也有默认值。没有参数的 运行ning git fetch
表示 "fetch everything",这正是您通常想要的。当 git pull
运行s git fetch
时,它添加了一些参数来限制获取的内容,这可能会使 this 获取的速度稍快,但会使以后的获取过程中稍微慢一点。 (现在付款,或稍后付款,但由于付款通常只是几分之一秒,谁在乎呢?)
git merge
或git rebase
命令至少需要知道一件事:
- 我们应该合并或重新定位什么?
这里也有一个默认值。默认是上游。当你使用 git pull
到 运行 第二个 Git 命令时,它有点摆弄这个,但效果基本相同,这样你就可以 运行 这两个 Git命令自己。
遥控器
任何 Git 存储库都可以有任意数量的 Git 调用的 remotes。远程主要是 URL 的简称,它的作用类似于 phone 号码,可以通过该号码访问其他 Git 存储库。最常见的远程名称是 origin
.
当您 运行 git clone
对其他 Git 存储库进行初始克隆时,您告诉 git clone
如何到达另一个 Git,给它一个URL。 clone
步骤 保存 URL 在名称 origin
下。1 因此 origin
成为提及其他 Git.
的简单方法
每个分支可以有一个 upstream
分支的上游由两部分组成:
- 遥控器的名称,以及
- 另一个分支的名称 Git。
通常我们只是把这两个放在一起,所以分支 B
的上游是 origin/<em>B</em>
。 请注意,从远程跟踪名称创建本地分支会自动设置上游,因此您很少需要这样做。2
要设置或更改任何给定分支的上游,您可以使用以下几个命令中的任何一个:
git branch --set-upstream-to origin/<em>branch</em> <em>branch</em>
(这将branch
的上游设置为origin/<em>branch</em>
)
git branch --set-upstream-to origin/<em>branch</em>
(这设置current 分支的上游,无论你签出什么,到 origin/<em>branch</em>
)
如果您还没有创建分支,这通常是您应该使用的那个。通常您会在分支上,并且是时候设置它的上游了, 所以你现在可以设置它了。
git push -u origin <em>branch</em>
如果你刚刚创建了分支,这就是你应该使用的。如果你刚刚创建了分支,那么就没有origin/<em>分支</em>
,你必须先创建名字branch
在另一个 Git 中,您使用 git push
来完成。现在它已经存在,并且你也有 origin/<em>branch</em>
,now 你可以设置上游。使用 git push -u
可以同时完成这两项操作,作为一种捷径,它的副作用是让 git push
知道你 的意思是 创建在另一个 Git 中分支,因此它也跳过了一堆烦人的错误消息。
1你可以选择另一个名字,但很少有人这样做。
2考虑以下序列:
git clone <url> # creates repository, adds the remote, fetches,
# and checks out master based on origin/master
cd <repository> # enter repo so that you can work in it
git checkout develop # creates develop based on origin/develop
git clone
步骤由 运行ning 创建了您的 master
分支,实际上是 git checkout master
。这使得 master
有了一个上游,即 origin/master
。 git checkout develop
步骤做同样的事情:找到 origin/develop
,用它来创建 new 分支名称 develop
作为 your develop
,并将您的 develop
设置为将 origin/develop
作为其上游。
git pull origin $(git rev-parse --abbrev-ref HEAD)
对于 git 2.22+:
git pull origin $(git branch --show-current)
有没有直接从当前分支拉取而无需显式调用的快捷方式。
例如我检查了一个分支:git checkout mybranch
从我使用的分支中提取 git pull origin mybranch
。是否可以跳过 origin mybranch
部分?问题是,我们的分支机构的名称很长,例如 b_searchsystem_grid
。
可能类似于 git pull origin .
(对于当前分支)。
你可以只做 git pull
并且如果你做了 git push -u origin <branch>
就让它暗示原点,一旦它通过设置你的上游远程使所有未来的 git 拉取基于原点。
我认为重要的是不仅要记住命令,还要理解背后的原因。
Git 分支可以有一个 "upstream branch" 集,这是与远程本地分支对应的分支。必须显式声明此上游分支,因为您可能有多个遥控器。在那种情况下,git 将不知道在您执行 git push
或 git pull
.
您可以列出您分支的上游分支:
$ git branch -vv
* testbranch 271404b commit message
master ac7a302 [origin/master] add foo
在这里你看到 testbranch
分支没有上游分支,所以 git 不知道从哪里 push/pull。然而,master 分支确实有一个上游分支(origin/master
),所以当我们输入 git pull
.
我们可以通过以下几种方式设置上游分支:
git branch --set-upstream-to origin/branchname
git branch -u origin/branchname
(只是一个shorthand)git push -u origin branchname
(通常更方便)
TL;DR
建立正确的默认值后,您可以 运行 仅 git pull
不带任何参数,但我建议您将其拆分为 git fetch && git merge
,如果这是您想要的。
长
首先,请记住 git pull
仅表示:运行 git fetch
,然后 运行 第二个 Git 命令。第二个命令默认为git merge
,但您可以选择git rebase
。
git fetch
命令需要知道两件事:
从哪里获取?
重要的是,有一个默认值。默认是与当前分支关联的 remote,基于它的 upstream。这两个定义如下。
取什么?
这里也有默认值。没有参数的 运行ning
git fetch
表示 "fetch everything",这正是您通常想要的。当git pull
运行sgit fetch
时,它添加了一些参数来限制获取的内容,这可能会使 this 获取的速度稍快,但会使以后的获取过程中稍微慢一点。 (现在付款,或稍后付款,但由于付款通常只是几分之一秒,谁在乎呢?)
git merge
或git rebase
命令至少需要知道一件事:
- 我们应该合并或重新定位什么?
这里也有一个默认值。默认是上游。当你使用 git pull
到 运行 第二个 Git 命令时,它有点摆弄这个,但效果基本相同,这样你就可以 运行 这两个 Git命令自己。
遥控器
任何 Git 存储库都可以有任意数量的 Git 调用的 remotes。远程主要是 URL 的简称,它的作用类似于 phone 号码,可以通过该号码访问其他 Git 存储库。最常见的远程名称是 origin
.
当您 运行 git clone
对其他 Git 存储库进行初始克隆时,您告诉 git clone
如何到达另一个 Git,给它一个URL。 clone
步骤 保存 URL 在名称 origin
下。1 因此 origin
成为提及其他 Git.
每个分支可以有一个 upstream
分支的上游由两部分组成:
- 遥控器的名称,以及
- 另一个分支的名称 Git。
通常我们只是把这两个放在一起,所以分支 B
的上游是 origin/<em>B</em>
。 请注意,从远程跟踪名称创建本地分支会自动设置上游,因此您很少需要这样做。2
要设置或更改任何给定分支的上游,您可以使用以下几个命令中的任何一个:
git branch --set-upstream-to origin/<em>branch</em> <em>branch</em>
(这将branch
的上游设置为origin/<em>branch</em>
)git branch --set-upstream-to origin/<em>branch</em>
(这设置current 分支的上游,无论你签出什么,到origin/<em>branch</em>
)如果您还没有创建分支,这通常是您应该使用的那个。通常您会在分支上,并且是时候设置它的上游了, 所以你现在可以设置它了。
git push -u origin <em>branch</em>
如果你刚刚创建了分支,这就是你应该使用的。如果你刚刚创建了分支,那么就没有
origin/<em>分支</em>
,你必须先创建名字branch
在另一个 Git 中,您使用git push
来完成。现在它已经存在,并且你也有origin/<em>branch</em>
,now 你可以设置上游。使用git push -u
可以同时完成这两项操作,作为一种捷径,它的副作用是让git push
知道你 的意思是 创建在另一个 Git 中分支,因此它也跳过了一堆烦人的错误消息。
1你可以选择另一个名字,但很少有人这样做。
2考虑以下序列:
git clone <url> # creates repository, adds the remote, fetches,
# and checks out master based on origin/master
cd <repository> # enter repo so that you can work in it
git checkout develop # creates develop based on origin/develop
git clone
步骤由 运行ning 创建了您的 master
分支,实际上是 git checkout master
。这使得 master
有了一个上游,即 origin/master
。 git checkout develop
步骤做同样的事情:找到 origin/develop
,用它来创建 new 分支名称 develop
作为 your develop
,并将您的 develop
设置为将 origin/develop
作为其上游。
git pull origin $(git rev-parse --abbrev-ref HEAD)
对于 git 2.22+:
git pull origin $(git branch --show-current)