- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我可以这样说:
git push --all origin
git pull --all origin
fatal: fetch --all does not take a repository argument
git pull --all
You asked to pull from the remote '--all', but did not specify
a branch. Because this is not the default configured remote
for your current branch, you must specify a branch on the command line.
git push --all origin
将所有分支推到原点一样)?
最佳答案
VonC's answer包含完成各种设置所需的所有项目,但对于git较新的内容,可以使用一些背景说明。
我认为这是一个非常不幸的命名方式,git具有fetch
,push
和pull
。听起来pull
是与push
相反的方向,但事实并非如此! push
与之最相反的东西实际上是fetch
(即使这样它们也不是完全对称的)。
为了正确理解所有这些,您需要知道在git中,分支名称仅是特定提交的标签,具有一个非常特殊的属性。 “常规”或“本地”分支名称(通常简称为“分支”)(如master
)具有特殊的属性,当您按分支名称检出然后在存储库中进行新提交时,该分支名称会自动继续以包括您的新提交。 (并且每个新的提交都指向其“父”旧的提交,或者合并到其所有父级。)
Git还提供了“远程分支”,这(在git传统中)的名称有些误导,因为它们也存在于您的存储库中,而不是其他“远程”存储库中。这些名称以远程名称为前缀,例如origin
,因此您将origin/master
作为“远程分支”。同样,这些只是提交的标签。取消本地分支,在您提交时它们不会移动,但它们确实会移动。当您使用git fetch
时它们会移动。
当您运行git fetch
时,您的git会联系某个远程对象(origin
),并询问它具有哪些branch1,以及这些标签所指向的对象。您可以通过运行git ls-remote
看到此内容:
$ git ls-remote
From ssh://[redacted]
d1574b852963482d4b482992ad6343691082412f HEAD
222c4dd303570d096f0346c3cd1dff6ea2c84f83 refs/heads/branch
d1574b852963482d4b482992ad6343691082412f refs/heads/master
d41117433d7b4431a188c0eddec878646bf399c3 refs/tags/tag-foo
fetch
会带来所有分支,并以不同的名称将其写入您的存储库。在这种情况下,
master
变为
origin/master
,而
branch
变为
origin/branch
.2
222c4dd...
),以及带来完成提交所需的任何其他基础对象。 (这包括他们拥有的,您尚未拥有的任何开发历史记录。)然后,将新的,远程调整的分支名称(
origin/branch
)设置为直接指向该提交(
222c4dd...
)。
git fetch
会覆盖所有分支,就像
git push --all
推送所有分支一样。
fetch
不执行的操作是将所有这些更新合并到您自己的本地分支中。这也是
fetch
和
push
不再互为镜像的地方:当您
push
到远程的分支时,不会自动重命名。3
master
时,它变为
origin/master
。我们的分支都没有被命名为
origin/whatever
,因此这不可能破坏我们的分支。但是,当我们将
master
推送给他们时,我们只是告诉他们将其设置为他们的
master
。我们不会说:“将我们的
master
推送到您的
alexander/master
”。4这就是为什么在我们推送之前,我们通常必须将我们的
master
合并或重新设置为它们的基础,以便当我们告诉他们时”嘿,将您的
master
设置为提交
af7c315
”,我们确保此新的提交ID包含了他们拥有的所有历史记录,这样他们就不会丢失任何历史记录。
git pull
的来源。要更新其
master
,我们需要首先使用
master
带来他们的
git fetch
,这将在我们的本地副本中将其重命名为
origin/master
。然后,一旦我们与它们同步,就可以合并或重新设置
master
和
origin/master
(现在与它们的
master
同步)。最后,当完成并取得好效果时,我们可以将新的
master
(现在基于/与匹配其
origin/master
的
master
合并)推到其
master
。只要所有这些事情发生得足够快,这些都行得通。 (如果速度不够快(如果有人将我们击败了
push
,那么我们就必须再次获取,重新合并或变基,然后再次尝试
push
。)
push
脚本仅使提取和合并/变基部分自动化。但这仅用一个分支来完成:我们现在已经签出的任何分支。这是因为,在git中,
git pull
和
merge
命令仅更改一个分支:
rebase
合并到当前分支中,并且
merge
通常重新设置当前分支的基础。 (如果您告诉
rebase
重新建立其他分支的基础,它将首先将其签出。)
git rebase
稍微容易些,因为
rebase
是从
git rebase origin/master master
开始的(因此它是内置在命令中的,但您仍在执行
git checkout master
。)幸运的是,
git checkout
将更新所有远程分支。一次,因此您只需要一个
git fetch origin
。
$ git checkout --track feature origin/feature
git fetch
上,否则不会调用将其变基或合并的方法。
feature
会进行初始签出,通常是
git clone
签出,而人们通常会使用功能分支,所以通常会先处理要使用的一个分支(
master
),而不要处理一个本地分支不需要(
feature
)。但是,只要离开分支直到
master
直到您确实需要它,这是没有错的。或者在完成其他分支的
origin/master
之后,甚至可以删除它:
$ git checkout branch # newer gits do --track automatically
Branch branch set up to track remote branch branch from origin.
Switched to a new branch 'branch'
$ git branch -d master
warning: deleting branch 'master' that has been merged to
'refs/remotes/origin/master', but not yet merged to HEAD.
Deleted branch master (was d1574b8).
$
git checkout
还可以看到标签和其他参考,您可以指示它带来更多内容。上面的示例显示了一个标签,加上
fetch
。添加
HEAD
或更改
--tags
行,可以将标签移到上方。
fetch =
参考是特殊的,并且git在克隆操作中对待
HEAD
的方式中存在一个长期存在的细微错误,这通常并不重要,并且需要更改协议以进行修复,因此没有人修复它。
HEAD
映射到
refs/heads/*
,其中复制了
refs/remotes/origin/*
部分。因此,如果遥控器上有
*
,则会得到
refs/heads/this/that
。这就是
refs/remotes/origin/this/that
文件中
fetch =
定义下的
remote
行所针对的:它告诉
.git/config
如何重新映射远程引用。这也是为什么我说“正常”提取:您可以配置它或使用选项运行它以使其行为有所不同。
fetch
并创建一个新的本地
master
分支,以便可以进行更改。然后,您需要进行一些更改,并使用
master
和
git add
创建至少一个新提交。同时,他们(无论“他们”是谁)也改变了事情并做出了新的承诺。您想看看他们做了什么,所以您
git commit
他们的新东西。如果那淹没了您的
git fetch
,您的工作将会怎样?幸运的是,git以不同的名称带来了他们的新作品:
master
。您的
origin/master
保持不变,跟踪您的新提交。
关于git - 从原点 pull 所有分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24151990/
有没有办法 git pull 直到有东西可以 pull 。 假设我正在等待一位同事推送他的最新更改,因为我不耐烦并且没有看他的屏幕,我只是运行 watch git pull 直到我看到有东西被 pul
这个问题在这里已经有了答案: What is the difference between 'git pull' and 'git fetch'? (37 个答案) 关闭 6 年前。 这个问题我一直
我有一个分支,想使用 $ git pull origin master 将 master 中的更改 git在我这样做之后, pull 确实没有显示任何 merge 的 PR 被 pull 并且说它已经
在各个地方,寻找有关如何从 GitHub merge 请求创建本地分支的说明,我看到了两个版本: git fetch upstream refs/pull/PR_ID/head:NEW_LOCAL_B
我已经在github上创建了一个仓库。 Upstream中有一些新的 pull 请求。我想从本地上游 pull 请求。 我怎样才能做到这一点?我不知道,没有发现任何与此相关的信息。 最佳答案 通过首先
假设我 fork 一个 GitHub 项目并进行一些更改,然后为要 merge 到的更改创建 pull 请求我从中 fork 的原始项目。 一旦我这样做了,如果我返回到我的 fork 项目并提交更多文
我在 BitBucket 上有一个 Git 存储库。我有两个分支 master 和 db。在我的笔记本电脑上,我对 db 进行了更改,提交了更改并推送到 BitBucket。我可以在该分支中看到提交。
我在分支 tm-skeleton并执行 git pull 做某事(从技术上讲,它要求输入密码,然后我在那里点击了 ),但我怎么知道它从哪里 pull ?通常,[branch "tm-skeleton"
我们在组织中使用 Github 进行源代码控制。多个开发人员不断地将他们的更改 merge 到远程源存储库。就我而言,我在两周前克隆了存储库,之后进行了多次 merge 。现在我正在尝试获取代码的最新
在 merge pull 请求之前,我想在本地快速 pull 请求并运行测试并测试一些内容。我还不想点击 gihub merge pull 请求。 我认为滑轮会有所帮助 http://ejohn.or
我有一个服务器,其中有一些我不知道我在哪里的配置我只是 git pull 并获取 github 存储库中的内容,然后重新启动它以进行部署。 问题是,有一个不是我最新的提交,它实际上不在我的服务器上。这
我是 Git 的新手,所以如果这是微不足道的,我深表歉意。我有一个使用 Github 和 EGit 设置的私有(private)存储库. 要更新并 merge 我的本地存储库分支与远程版本(本质上是g
pull 请求的发起者可能 give the maintainer the ability to edit the pull request . 对于任何给定的 pull 请求,我们如何判断该能力是否
我 fork 了一个GitHub存储库,并在 fork 上进行了一些更改,然后提交了一个 pull 请求,但是原始GitHub存储库的所有者要求对它们进行 pull 请求中的一些更改。我以为在fork
如何使用 Git GUI 工具进行拉取?似乎任何地方都没有 pull 命令。 是否有使用 Git GUI 的等效菜单选项? 任何帮助将不胜感激。 最佳答案 嗯,我发现这个有用的论坛帖子: https:
我制作了一个程序来从我的 github 上托管的公共(public)存储库中提取数据。克隆一个项目工作得很好(无论如何我都是这样做的),但我一直在努力让它工作以提取所有内容,一旦你删除一个文件,它不再
哪个比另一个更可取,为什么?如果我在提交之前 pull ,其他开发人员所做的更改是否与我当前正在处理的内容 merge ?如果是这样,那意味着这个更可取? 最佳答案 最好先提交。 pull 而不提交可
我对使用 git 在团队中工作还很陌生。 我从“origin/master”开始。 首先我创建了一个新分支feature/26062018-offline-seite_ef。 我添加了提交。 我检查了
这个问题在这里已经有了答案: Retrieve specific commit from a remote Git repository (11 个答案) 关闭 9 年前。 我在本地创建一个空的新存
我开始在 Github 上使用新的 pull 请求草案功能,但我想知道在我不小心发出 pull 请求的情况下是否可以将合法的 pull 请求转换回 pull 请求草案。 最佳答案 如前所述on Twi
我是一名优秀的程序员,十分优秀!