使用git我做了这样的东西

git clone
git checkout {a rev number tree rev before} (here I started to be in a detached head state)
//hacking
git commit
//hacking
git commit
(some commit where made on origin/master)
git pull (which does complete because there was some error due to the fact that I'm no more on master)

因为它告诉我,当我处于超然的头脑状态时,我仍然可以做出承诺,我这样做了。 但现在我想合并分离的head分支和本地master分支,然后将我的一堆更改推到origin/master。

所以我的问题是我如何将主分支与我的实际状态(分离头)合并


当前回答

在分离HEAD的情况下,除了没有更新已命名的分支外,提交工作正常。要用已提交的更改更新主分支,在您所在的位置创建一个临时分支(这样临时分支将拥有您在分离HEAD中所做的所有已提交的更改),然后切换到主分支并将临时分支与主分支合并。

git branch  temp
git checkout master
git merge temp

其他回答

在分离HEAD的情况下,除了没有更新已命名的分支外,提交工作正常。要用已提交的更改更新主分支,在您所在的位置创建一个临时分支(这样临时分支将拥有您在分离HEAD中所做的所有已提交的更改),然后切换到主分支并将临时分支与主分支合并。

git branch  temp
git checkout master
git merge temp

你可以这样做。

# Create temporary branch for your detached head
git branch tmp

# Go to master
git checkout master

# Merge in commits from previously detached head
git merge tmp

# Delete temporary branch
git branch -d tmp

更简单的是

git checkout master
git merge HEAD@{1}

但这有一个轻微的危险,如果您犯了一个错误,恢复在分离头上所做的提交可能会有点困难。

或者,您可以在分支上选择commit-id。

<commit-id>在分离head状态

Git checkout master

Git cherry-pick <commit-id>

没有临时分支,没有合并。

在你所在的位置创建一个分支,然后切换到master并合并:

git branch my-temporary-work
git checkout master
git merge my-temporary-work

当我做了导致分离头部的签出,git实际上告诉我在这种情况下该怎么做:

Git开关-c \<new-branchname>

结果会像分离头之前一样离开主节点,而包含在分离头状态下工作时所做的所有提交的新分支。

重现/测试/了解更多细节:

用两次提交创建一个testrepo:

~/gittest$ git log——一行 17c34c0 (HEAD -> master 5975930 1

签出之前的提交1

~/gittest$ git checkout 5975930

这条德国信息出现了

Hinweis: Wechsle zu '5975930'. Sie befinden sich im Zustand eines 'losgelösten HEAD'. Sie können sich umschauen, experimentelle Änderungen vornehmen und diese committen, und Sie können alle möglichen Commits, die Sie in diesem Zustand machen, ohne Auswirkungen auf irgendeinen Branch verwerfen, indem Sie zu einem anderen Branch wechseln. Wenn Sie einen neuen Branch erstellen möchten, um Ihre erstellten Commits zu behalten, können Sie das (jetzt oder später) durch Nutzung von 'switch' mit der Option -c tun. Beispiel: git switch -c \<neuer-Branchname> Oder um diese Operation rückgängig zu machen: git switch - Sie können diesen Hinweis ausschalten, indem Sie die Konfigurationsvariable 'advice.detachedHead' auf 'false' setzen. HEAD ist jetzt bei 5975930 1

翻译成英语是:

Note: Change to '5975930'. You are in the state of a 'detached HEAD'. You can look around, make experimental changes and commit them, and you can discard any possible commits you make in this state without affecting any branch by switching to another branch. If you want to create a new branch to keep your created commits, you can do that (now or later) by using 'switch' with the -c option. Example: git switch -c <new-branch-name>. Or to undo this operation: git switch -. You can turn off this hint by setting the configuration variable 'advice.detachedHead' to 'false'. HEAD is now at 5975930 1

(通过www.DeepL.com/Translator翻译(免费版))