繁体   English   中英

Git脱离头将本地更改推入回购分支

[英]Git detached head pushing local changes to branch in repo

我的输出如下:

(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 ,基本上我已经在本地进行了一些更改,我希望将这些更改推送到test_branch中存在的test_branch

我应该怎么做才能解决这个问题? 这样我就可以将所有更改从本地推送到test_branch?

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

git checkout -b test_branch
git branch -u origin/test_branch

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

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

本地分支不是必需的(因此git push origin HEAD:test_branch 可以工作),但是它很有用,并且是使用git的常规方法。 如果您没有本地分支机构,并且在移动到另一分支机构之前也始终不将更改推送到某个分支机构的遥控器,那么事情将变得非常困难,并且更改可能最终会丢失(或者至少很难定位)。

好消息是,实际上很容易获得当地分支机构。 在某些时候你一定已经说过

git checkout origin/test_branch

如果您改为说

git checkout test_branch

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

只需将其推入远程,指定您要将HEAD推入分支:

git push origin HEAD:test_branch

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM