- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 git 中进行高级操作时,我更像是一个新手。我维护我的blog使用博客框架 Octopress .虽然 Octopress 自 2011 年以来没有进行任何开发,但它很好地满足了我的目的,所以到目前为止我还没有想过要改变任何东西。
仅供引用,我的博客托管在 Github Pages 上。
今天,在写一个新帖子时,git status
显示以下消息:
On branch source
Your branch is based on 'origin/master', but the upstream is gone.
(use "git branch --unset-upstream" to fixup)
git add .
,
git commit -m 'message'
和
git push origin source
.
bash-3.2$ git branch -a
* source
remotes/octopress/2.1
remotes/octopress/HEAD -> octopress/master
remotes/octopress/gh-pages
remotes/octopress/linklog
remotes/octopress/master
remotes/octopress/refactor_with_tests
remotes/octopress/rubygemcli
remotes/octopress/site
remotes/origin/source
最佳答案
TL;DR 版本:远程跟踪分支 origin/master
曾经存在,但现在不存在,所以本地分支 source
正在跟踪一些不存在的东西,这充其量是可疑的——这意味着不同的 Git 功能无法为你做任何事情——并且 Git 正在警告你。 “上游跟踪”功能没有按预期工作,您一直相处得很好,因此是否要更改任何内容取决于您。
有关上游设置的另一种看法,请参阅 Why do I have to "git push --set-upstream origin <branch>"?
这个警告是 Git 中的一个新东西,首先出现在 Git 1.8.5 中。发行说明只包含一个关于它的简短项目:
- "git branch -v -v" (and "git status") did not distinguish among a branch that is not based on any other branch, a branch that is in sync with its upstream branch, and a branch that is configured with an upstream branch that no longer exists.
origin
或
octopress
在这种情况下。它们的目的是记录诸如您所在位置的完整 URL 之类的内容
git fetch
或
git pull
更新。当您使用
git fetch remote,
1 Git 转到那个远程(使用保存的 URL)并带来适当的更新集。它还使用“远程跟踪分支”记录更新。
remotes/origin/
下.您显示的文本说有一个名为
source
的分支。在
origin
,以及名为
2.1
的分支,
linklog
,等等
octopress
.
L
设置为跟踪远程跟踪分支
R
, Git 会调用
R
它的“上游”并告诉您您是否“领先”和/或“落后”上游(就提交而言)。本地分支和远程跟踪分支使用相同的名称(远程前缀部分除外)是正常的(甚至可以推荐),例如
source
和
origin/source
,但这实际上并不是必需的。
source
跟踪远程跟踪分支
origin/master
.
source
.有两个配置条目使用此名称,拼写为
branch.source.remote
和
branch.source.merge
.从您显示的输出中,很明显这些都已设置,因此如果您运行给定的命令,您将看到以下内容:
$ git config --get branch.source.remote
origin
$ git config --get branch.source.merge
refs/heads/master
source
跟踪您的“远程跟踪分支”,
origin/master
.
git branch -a
的输出,它显示存储库中的所有本地和远程跟踪分支名称。远程跟踪名称列在
remotes/
下... 并且没有
remotes/origin/master
.据推测,曾经有过,但现在已经消失了。
--unset-upstream
删除跟踪信息。 .这将清除
branch.source.origin
和
branch.source.merge
,并停止警告。
origin/master
, 跟踪其他内容:可能
origin/source
,但也许是
octopress/
之一名称。
git branch --set-upstream-to
来做到这一点,3 例如:
$ git branch --set-upstream-to=origin/source
origin/source
是您想要的上游 - 但我无法确定您真正想要哪个,如果有的话)。
git clone
时,你克隆的东西有一个分支
master
.你也有一个分支
master
,设置为跟踪
origin/master
(这是 git 的正常标准设置)。这意味着你有
branch.master.remote
和
branch.master.merge
设置为
origin
和
refs/heads/master
.但是你的
origin
remote 更名为
master
至
source
.为了匹配,我相信您也将您的本地名称从
master
更改为至
source
.这更改了您设置的名称,来自
branch.master.remote
至
branch.source.remote
来自
branch.master.merge
至
branch.source.merge
...但它保留了旧值,所以
branch.source.merge
现在错了。
git pull remote branch
,您可能多年来一直在解决这个问题。 (例如,
git pull origin source
)。如果你继续这样做,它将继续解决问题——所以,不,你不需要修复它。如果您愿意,可以使用
--unset-upstream
拆除上游,停止投诉,没有地方分公司
source
标记为有任何上游。
git fetch
其次是
git merge
如果上游设置正确,通常会“做正确的事”,并且
git status
后
git fetch
会告诉您您的 repo 是否与该分支的上游 repo 相匹配。
git pull
用途
git fetch
,从 Git 1.8.4 开始,这(终于!)也更新了“远程跟踪分支”信息。在旧版本的 Git 中,更新没有被记录在远程跟踪分支中
git pull
,只有
git fetch
.由于您的 Git 必须至少为 1.8.5 版本,因此这对您来说不是问题。
remote.origin.fetch
下找到的. Git 必须映射“merge ”名称才能确定远程分支的完整本地名称是
refs/remotes/origin/master
.不过,映射几乎总是这样工作,所以可以预见
master
转至
origin/master
.
git config
.如果您只想将上游设置为
origin/source
唯一需要改变的部分是
branch.source.merge
, 和
git config branch.source.merge refs/heads/source
会做的。但是
--set-upstream-to
说你想做什么,而不是让你自己手动去做,所以这是一个“更好的方法”。
关于git - 为什么调用 git branch --unset-upstream 来修复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21609781/
我试图让 Branch.io 在 Android 上工作,但我遇到了: myapplication.MainActivity cannot be cast to android.app.Applica
当我执行 git branch 时,我知道我在分支 v0.2 上。 git branch v0.1 * v0.2 但是当我执行 git push 时它说“你当前分支的上游分支与你当前分支的名称不
在使用 Git GUI 检查远程分支 releases/rel_5.4.1 之后,当我尝试 push 时看到了这个意外的错误消息: fatal: The upstream branch of your
SO 上有一个相关问题处理如何更改 push 命令的参数以避免出现此消息: fatal: The upstream branch of your current branch does not mat
arc feature [branch-name] 和 git branch [branch-name] 有什么区别? 他们似乎都创建了一个新分支。 最佳答案 arc feature [branch-
FIFO、LIFO 和LC Branch and Bound 有什么区别? 最佳答案 Branch & Bound 通过使用估计边界来限制可能解决方案的数量来发现完整搜索空间内的分支。不同的类型(FI
有人知道这两个切换和跟踪远程分支的命令之间的区别吗? git checkout -b branch origin/branch git checkout --track origin/branch 我
关于 git-svn 工作流程有很多问题,但我一直无法弄清楚这一点: This section of the svn book谈到 SVN 的一个常见做法:创建一个分支,并在主干更新时不断合并主干中的
我正在构建一个控制 git 存储库的 PHP 应用程序。我有一个执行命令 git status 的同步函数,虽然没有返回“你的分支是最新的”,但可能会提前采取必要的行动,比如远程或本地分支。 我还构建
是否可以使用 branch.io 创建自定义链接,例如 https://example.app.link/fzmLEhobLD所以我可以用我的自定义 10 位参数(如 amitpp8888)控制 fz
我从 github 克隆了一个分支,它的名字是 dev。我已经开始使用它, pull 和推送代码更改并确保我的本地存储库与远程存储库保持同步。我要开始实现一个新功能,因此创建了一个新分支,如下所示:
我们有一个发布模型,为简单起见,我们假设每月 1 次。所以,我们通常会去: Jan -> trunk trunk -> Feb trunk trunk et
使用 Branch.io HTTP API 创建的链接不会在 Branch 门户中显示为快速链接。快速链接很方便,因为它们在一个 View 中显示“点击”、“打开”等内容 用于创建链接的 API:li
我创建了一个分支,当我第一次从源代码合并到分支时,出现了一大堆旧的变更集,它说没有合并,但它们在分支之前就存在,我确认它们在那里。 例子: 假设当 Source 中有 9 个变更集时,我从 Sourc
这是关于我为什么这样做 不是 收到错误“致命:当前分支 A 没有上游分支”。 我删除了 远程 分公司 一个 使用命令 git push origin :A . 然后我切换到本地 分支 A 使用命令 g
我正在使用 clover 插件来检查我的 java 代码测试覆盖率。 我为所有行编写了单元测试。当我点击红线时,它显示“true分支执行了2次,分支执行了0次”。这是什么意思?我该如何解决这个问题?
很确定我误解了 git。 我的目标 我在 github 上有一个带有“master”分支的私有(private)存储库。 我还想有一个生产分支,我会将所有更改从 master 推送到该分支。 然后我想
我将一个相当老的主题分支重新定位到 master 上。由于在 rebase 期间有很多冲突,我想将旧主题分支与 rebased 分支进行比较,以确保我没有意外删除或搞砸主题上的任何更改。我最接近的是比
我正在尝试将我的一个项目推送到 github,但我一直收到此错误: peeplesoft@jane3:~/846156 (master) $ git push fatal: The current b
Jenkins Git 插件根据我的引用规范在控制台输出中生成了以下命令 下面两个命令有什么区别?他们的输出看起来没什么不同。我在下面给出了他们的输出: 命令 1: git fetch --no-ta
我是一名优秀的程序员,十分优秀!