git - Git如何向上游推送?

标签 git github

我和几个 friend 在 GitLab 有个项目,当然有 master 分支,还有一些其他的。当我克隆存储库时,我还使用命令 git remote add upstream ... 创建了一个上游。

然后,我发布了 git fetch upstream。接着是 git checkout upstream/test1。现在,如果我输入 git branch -a,我会得到如下输出:

* (HEAD detached at upstream/test1)
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/upstream/test1
  remotes/upstream/master

一切都很好,但后来我对 upstream/test1 分支中的代码做了一些更改。我还不想将它们推送到 origin/test1,但我希望能够将我的更改推送到 upstream/test1,以便我的其他 friend 可以看到它.但是,如果我发出以下命令集:

git add .
git commit -m "Sample message"

提交后我收到消息:

[detached HEAD 4f20e95] Sample message
 5 files changed, 12 insertions(+), 1 deletions(-)

并且哈希值在我的命令提示符中更改为 4f20e95。然后,如果我执行 git push,我会收到以下错误消息:

fatal: You are not currently on a branch.
To push the history leading to the current (detached HEAD)
state now, use

    git push origin HEAD:<name-of-remote-branch>

如何在不实际推送到源的情况下推送到我的上游分支。

最佳答案

分支 upstream/test1 是一个远程跟踪分支,不能手动更新。这些分支跟踪远程服务器上的分支,并且仅在 git fetch/git push 期间更新。

相反,首先检查一个新的本地分支:

git checkout -b test1 upstream/test1

然后像往常一样提交。由于您已经提交,而是执行:

git checkout -b test1 4f20e95

准备就绪后,推送到上游:

git push upstream test1

当您执行普通 git push 时,Git 使用远程和分支的默认值根据特定配置选项进行推送。但是,如果您不在一个分支上(因此收到 detached HEAD 消息),那么 Git 不知道要推送哪个分支,因此会给出您收到的错误。

关于git - Git如何向上游推送?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40141425/

相关文章:

git - 缺少平衡此 if 语句的结尾

git - 无法将新的 git 存储库推送到 github

git - 如何以 "git add"指定文件类型?

git - 更新 github 存储库以匹配本地

java - Java项目的git init在哪里?

github - 我可以创建一个与存在但已被删除的存储库名称相同的 github 存储库吗?

git - 错误 : git-upload-pack died of signal 13

git - Vim:如果在 Git 中未跟踪文件,则发出警告

github - 静态网站 : I want to host different subdomain (=different directory) on github service?

linux - 在 Beaglebone 上安装 git 和配置 github 时出现 SSL/https 错误