首先,我怎样才能看到我目前在哪个分支?我输入了“git branch”,但它返回了
* (no branch)
master
那么当我提交时,这些更改将提交到哪里?
其次,我怎样才能得到我对主分支所做的更改?
当您在这种情况下提交某些内容时,提交的创建方式与正常情况相同,但没有指向它的分支。为了使之后更容易找到提交(即不记住哈希或使用 reflog)并防止垃圾收集器,即使在提交之后,您也可以创建一个分支:
git commit
git branch tmp
之后,将更改返回给 master 的一种方法如下,假设签出的提交是 master 的父级:
git rebase master
git checkout master
git merge tmp
git branch -d tmp
您当前处于“分离头”模式。所以 git 不会对你撒谎:你不在一个分支上,或者更确切地说不在一个有名字的分支上。
尽管如此,您当前的提交仍然有历史记录。我将假设您已经提交了所做的任何更改,因此您的工作副本是干净的:如果没有,请使用git stash
orgit 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 的内容。
这应该可以将其放入本地主机并将其推送到远程源
git stash
git checkout master
git stash pop
git add .
git commit -m "my changes.."
git push origin master