3

在设置 OpenEmbedded 项目后,源设置为分离头状态。您如何确定从哪个分支(本地或远程)签出源代码?

是的,您可以查看分支并比较代码。有没有更简单的方法?

我正在使用 Git 1.7.1 版。

$ git config -l
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
remote.origin.url=git://arago-project.org/git/projects/meta-arago-amsdk.git
branch.master.remote=origin
branch.master.merge=refs/heads/master
branch.amsdk-06.00.00.00-integration.remote=origin
branch.amsdk-06.00.00.00-integration.merge=refs/heads/amsdk-06.00.00.00-integration

$ git branch -a
* (no branch)
  amsdk-06.00.00.00-integration
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/amsdk-05.06.00.00-integration
  remotes/origin/amsdk-05.07.00.00-integration
  remotes/origin/amsdk-05.08.00.00-integration
  remotes/origin/amsdk-06.00.00.00-integration
  remotes/origin/master
  remotes/origin/master-upstream
4

1 回答 1

10

解决方案1:git reflog

HEAD如果您的工作副本进入分离头状态后没有移动参考,您可以使用git reflog -1以下方法找到您的头分离的位置:

git reflog -1
d761f4a HEAD@{0}: checkout: moving from feature to head~5

请注意,我不确定这些信息在旧版本的 Git 中是否可用。

即使您一直在移动您的HEAD参考,您仍然可以找到您在 reflog 中某处分离的点:

git reflog | grep checkout

对于无权访问的用户grep,您可以findstr在 PowerShell 中使用,或使用 Git 中内置的这些标志:

git log --walk-reflogs --grep-reflog "checkout" --oneline

解决方案2:查找包含当前提交的所有分支

查找包含您当前已签出的提交的所有分支(本地和远程跟踪分支):

git branch --all --contains HEAD

然后只需检查每个分支的第一次提交,看看给定的提交是否是该分支的头部:

git log -1 <branch>

感谢torek 的简化解决方案

于 2013-09-06T22:40:35.730 回答