我在GitLab有几个朋友的项目,当然还有主分支,还有其他一些。当我克隆存储库时,我使用命令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
存储库,我在标题上收到错误消息。请注意,我按照以下步骤推送:
git add .
git commit -m "Sample message"
git push -u origin test1
如果我发出git show-ref
,我会得到以下输出:
refs/heads/master
refs/remotes/origin/HEAD
refs/remotes/origin/master
refs/remotes/upstream/test1
refs/remotes/upstream/master
我检查了以下questions,但没有发现它有用。任何想法如何解决?
答案 0 :(得分:3)
您似乎没有名为test1
的本地分支。您有一个名为test1
的远程分支与您的upstream
遥控器相关联。
您不应该直接编辑upstream/test1
分支。事实上,试图检查出来应该会产生警告:
$ git checkout upstream/test1
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
首先应该检查一个跟踪远程分支的本地分支,它应该是这样的:
$ git checkout test1
Branch test1 set up to track remote branch test1 from upstream by rebasing.
Switched to a new branch 'test1'
执行此操作后,未经修饰的git push
会推送到upstream
遥控器,而git push origin test1
会推送到origin
遥控器。添加-u
标记会切换跟踪分支,以便您的分支跟踪upstream/test1
,而不是跟踪origin/test1
,以便将来git pull
和git push
操作默认情况下会引用该远程分支(origin/test1
)。
答案 1 :(得分:1)
以下内容将在本地和远程创建一个新分支。当我创建一个新的分支时,我会遵循这个。
git checkout master
git pull origin master
git checkout -b 你的分支
进行新的更改
git push -u origin your-branch
答案 2 :(得分:0)
在我的情况下,我在master分支中进行了更改,并且试图将更改推送到development分支,因此得到了错误。 我所做的是-
git checkout development
进行我的更改,然后运行
git add .
git commit -m "my changes"
git push origin development
答案 3 :(得分:0)
对我来说,问题是我试图将标记/文件夹中的分支名称推入我们已设置的类型(功能/错误修复/等),并且由于我的处理方式而未显示文件夹名称终端提示设置。我需要运行gpo feature/branch-name
,但心不在running地运行gpo branch-name
。 ({gpo
是我为git push origin
设置的别名,顺便说一句。)
以防万一,这对任何人都有帮助。