2

首先,我怎样才能看到我目前在哪个分支?我输入了“git branch”,但它返回了

* (no branch)
  master

那么当我提交时,这些更改将提交到哪里?

其次,我怎样才能得到我对主分支所做的更改?

4

3 回答 3

1

当您在这种情况下提交某些内容时,提交的创建方式与正常情况相同,但没有指向它的分支。为了使之后更容易找到提交(即不记住哈希或使用 reflog)并防止垃圾收集器,即使在提交之后,您也可以创建一个分支:

git commit
git branch tmp

之后,将更改返回给 master 的一种方法如下,假设签出的提交是 master 的父级:

git rebase master
git checkout master
git merge tmp
git branch -d tmp
于 2012-07-10T23:38:07.140 回答
0

您当前处于“分离头”模式。所以 git 不会对你撒谎:你不在一个分支上,或者更确切地说不在一个有名字的分支上。

尽管如此,您当前的提交仍然有历史记录。我将假设您已经提交了所做的任何更改,因此您的工作副本是干净的:如果没有,请使用git stashorgit commit将这些更改排除在外。

要将提交“输出”到掌握,您有两个选择。首先,您可以将 master 更改当前分支:

git branch -d master
git branch master
git checkout master

...只有在“master”中的所有更改都存在于您当前的未命名分支中时才会成功。

另一种方法是检查 master 然后在您当前的更改中合并/rebase/cherry-pick:

git checkout master
git merge HEAD@{1} # HEAD@{1} is "where HEAD was previously"

您通过执行类似的操作进入“分离头”状态git checkout HEAD~1,您可以在其中检查不是分支 HEAD 的内容。

于 2012-07-10T23:36:52.960 回答
0

这应该可以将其放入本地主机并将其推送到远程源

  git stash
  git checkout master
  git stash pop  
  git add .
  git commit -m "my changes.."
  git push origin master
于 2012-07-10T23:33:31.620 回答