是否有快捷方式从当前分支拉出而没有明确调用它。
E.g。我检查了一个分支:git checkout mybranch
要从分支拉出,我使用git pull origin mybranch
。可以跳过origin mybranch
部分吗?问题是,我们的分支有很长的名字,如b_searchsystem_grid
。
可能类似git pull origin .
(。当前分支。)。
答案 0 :(得分:2)
我认为不仅要记住命令,而且要了解这背后的原因也很重要。
Git分支可以有一个"上游分支" set,它是遥控器上本地分支的相应分支。必须显式声明此上游分支,因为您可能有多个远程分支。在这种情况下,当您执行git push
或git pull
时,git不会知道从哪里推或拉。
您可以列出分支的上游分支:
$ git branch -vv
* testbranch 271404b commit message
master ac7a302 [origin/master] add foo
在这里你看到testbranch
分支没有上游分支,所以git不知道从哪里推/拉。但是,主分支确实有一个上游分支(origin/master
),因此当我们键入git pull
时,git确实知道该怎么做。
我们可以通过几种方式设置上游分支:
git branch --set-upstream-to origin/branchname
git branch -u origin/branchname
(只是简写)git push -u origin branchname
(通常更方便)答案 1 :(得分:2)
在您建立正确的默认值后,您可以只运行git pull
而没有参数,但我建议您将其拆分为git fetch && git merge
,如果这是您想要的。
首先,请记住git pull
只是意味着:运行git fetch
,然后运行第二个Git命令。第二个命令默认为git merge
,但你可以请改为选择git rebase
。
git fetch
命令需要知道两件事:
从哪里取?
重要的是,有一个默认值。默认值是与当前分支关联的远程,基于其上游。这两个定义如下。
取得什么?
这里也有默认值。不带参数运行git fetch
意味着"获取所有内容",这是您通常想要的。当git pull
运行git fetch
时,它会添加一些参数来限制获取的内容,这可能会使此获取稍微快一些,但在此过程中使将来的提取稍微慢一些。 (立即付款,或稍后付款,但由于付款通常只是几分之一秒,谁在乎呢?)
git merge
或git rebase
命令至少需要知道一件事:
这里也有违约。默认为上游。当你使用git pull
来运行第二个Git命令时,它会稍微改变一下,但效果基本相同,这样你就可以自己运行两个Git命令了。
任何Git存储库都可以有任意数量的Git调用远程。远程主要是URL的短名称,其作用类似于可以访问其他一些Git存储库的电话号码。最常见的远程名称是origin
。
当您运行git clone
进行其他Git存储库的初始克隆时,您告诉git clone
如何访问其他Git,并为其提供一个URL。 clone
步骤保存名称为origin
的。 1 因此origin
成为提及其他Git的简单方法。
分支的上游由两部分组成:
通常我们将这两者放在一起,以便分支 B
的上游为origin/B
。 请注意,从远程跟踪名称创建本地分支会自动设置上游,因此您很少需要这样做。 2
要设置或更改任何给定分支的上游,您可以使用以下任何一个命令:
git branch --set-upstream-to origin/branch branch
(这会将 branch
的上游设置为origin/branch
)
git branch --set-upstream-to origin/branch
(这会将当前分支的上游设置为origin/branch
如果你还没有创建分支,这通常是你应该使用的那个。通常你会在分支上,现在是时候设置它的上游,所以你现在可以设置它。
git push -u origin branch
如果您刚创建了分支,则应该使用此功能。如果您刚刚创建了分支,那么根本没有origin/branch
,您必须首先在其他Git中创建名称 branch
,与git push
一起使用。现在它已存在,并且您还有origin/branch
,现在,您可以设置上游。使用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
步骤通过运行master
来创建git checkout master
分支。这使master
有一个上游,即origin/master
。 git checkout develop
步骤执行相同的操作:找到origin/develop
,使用它将新分支名称develop
设为您的 {{ 1}},并将develop
设置为develop
作为其上游。
答案 2 :(得分:1)
你可以git pull
进行git push -u origin <branch>
,如果你通过设置你的上游遥控器,它将根据原点进行所有未来的git拉动,那么它就会产生JSONObject a = (JSONObject) parser.parse(inputLine);
JSONArray resources = a.getJSONArray("resources");
。