Git分离头,将局部更改推送到回购中的分支

Git分离头,将局部更改推送到回购中的分支,git,Git,我的输出如下: (DRF_env) D:\Development\SHK\OnlyDRF\server>git branch -a * (HEAD detached at origin/test_branch) master remotes/origin/HEAD -> origin/master remotes/origin/master remotes/origin/test_branch 我做了git-fetch--all,基本上我在本地做了一些更改,我想把这

我的输出如下:

(DRF_env) D:\Development\SHK\OnlyDRF\server>git branch -a
* (HEAD detached at origin/test_branch)
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/origin/test_branch
我做了
git-fetch--all
,基本上我在本地做了一些更改,我想把这些更改推到我的repo中存在的
test\u分支


我应该怎么做才能解决头部分离的问题?因此,我可以将所有更改从本地推送到测试分支?

只需推送到远程,指定要将头部推送到分支:

git push origin HEAD:test_branch

这是假设您不想为其创建本地分支。

只需将头推入远程,并指定要将头推入分支:

git push origin HEAD:test_branch

这是假设您不想为它创建本地分支。

基于该输出,您被指向远程的
测试分支
,但实际上您没有相应的本地分支。那么,我假设您的更改在工作树中。因此:

git checkout -b test_branch
git branch -u origin/test_branch
第一个将创建本地分支并使您脱离分离的头部状态。第二个应该在本地和远程分支之间建立跟踪。然后添加并提交更改,并像往常一样推送

更新-评论提出了一个问题:是否需要一个本地分支机构

本地分支不是必需的(因此,
git push origin HEAD:test\u branch
可以工作),但它很有用,并且是使用git的正常方式。如果您没有本地分支,并且在转移到另一个分支上工作之前也不总是将一个分支的更改推送到远程,那么事情将变得非常困难,更改可能会丢失(或者至少很难找到)

好消息是,实际上很容易找到当地的分支机构。你一定在某个时候说过

git checkout origin/test_branch
如果你说

git checkout test_branch

然后git会注意到没有这样的本地分支,但是有一个同名的远程分支。因此,它将创建本地分支并自动在两者之间设置跟踪。

根据该输出,您将被指向远程的
测试分支
,但实际上您没有相应的本地分支。那么,我假设您的更改在工作树中。因此:

git checkout -b test_branch
git branch -u origin/test_branch
第一个将创建本地分支并使您脱离分离的头部状态。第二个应该在本地和远程分支之间建立跟踪。然后添加并提交更改,并像往常一样推送

更新-评论提出了一个问题:是否需要一个本地分支机构

本地分支不是必需的(因此,
git push origin HEAD:test\u branch
可以工作),但它很有用,并且是使用git的正常方式。如果您没有本地分支,并且在转移到另一个分支上工作之前也不总是将一个分支的更改推送到远程,那么事情将变得非常困难,更改可能会丢失(或者至少很难找到)

好消息是,实际上很容易找到当地的分支机构。你一定在某个时候说过

git checkout origin/test_branch
如果你说

git checkout test_branch

然后git会注意到没有这样的本地分支,但是有一个同名的远程分支。因此,它将创建本地分支,并自动在两者之间设置跟踪。

因为分支列表显示“在原始/测试分支分离”(而不是“从…”),所以可能只会显示“已更新”。首先添加/提交,然后执行此操作,是的,它应该在没有本地分支的情况下工作;在我的回答中,我恰好假设了相反的情况,即需要一个本地分支。因为分支列表上说“在原始/测试分支处分离”(而不是“从…”),所以可能只会说“已经更新”。首先添加/提交,然后执行此操作,是的,它应该在没有本地分支的情况下工作;在我的回答中,我恰好假设了相反的情况,即需要一家当地分支机构。谢谢你的回答,它解决了我的问题!是否总是有必要为我们想要使用的回购协议上的每个分支机构创建一个新的本地分支机构?严格来说,没有,但拥有本地分支机构会让您的生活更轻松。我将更新以提供有关这方面的一些信息……只是为了补充一点知识:分支非常有用。我不想暗示你应该避开他们。然而,有些用例是过度使用的。例如,假设你被要求在一个远程分支上做一件小事情,但你不想在本地做(其他人正在做的功能分支,你被要求在那里做一件非常简单的事情,你不想用本地分支污染你的回购协议)。因此
git签出远程/a分支;固定;吉特加。;git提交“废话”;git推送远端头:a分支
@Edmundo-是的,在这种情况下,您将在转移到另一个分支之前推动更改,这样它就可以顺利工作。但我仍然没有这样做,因为我发现在我完成后添加
git branch-da-branch
和记住我很少用于
push
的语法一样容易。最终,这取决于个人偏好。谢谢你的回答,它解决了我的问题!是否总是有必要为我们想要使用的回购协议上的每个分支机构创建一个新的本地分支机构?严格来说,没有,但拥有本地分支机构会让您的生活更轻松。我将更新以提供有关这方面的一些信息……只是为了补充一点知识:分支非常有用。我不想暗示你应该避开他们。然而,有些用例是过度使用的。例如,假设你被要求在一个远程分支上做一件小事情,但你不想在本地做(其他人正在做的功能分支,你被要求在那里做一件非常简单的事情,你不想用本地分支污染你的回购协议)。因此
git签出远程/a分支;固定;吉特加。;git提交“废话”;git推送远端头:a分支@Edmun