在Git中查找从哪个分支头拆下的分支头

在Git中查找从哪个分支头拆下的分支头,git,Git,设置开放式嵌入项目后,源将设置为分离头状态。如何确定源代码是从哪个分支(本地或远程)签出的 是的,您可以检查分支并比较代码。有没有更简单的方法 我使用的是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

设置开放式嵌入项目后,源将设置为分离头状态。如何确定源代码是从哪个分支(本地或远程)签出的

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

我使用的是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
解决方案1:git reflog 如果自您的工作副本进入分离头部状态后,您没有移动您的
头部
参考,您可以使用
git reflog-1
查找头部在以下位置分离:

git reflog -1
d761f4a HEAD@{0}: checkout: moving from feature to head~5
请注意,我不确定这些信息是否在较旧版本的Git中可用

即使您一直在移动
头部
引用,您仍然可以找到在reflog中某个地方分离的点:

git reflog | grep checkout
对于无法访问
grep
的用户,您可以在PowerShell中使用
findstr
,或者使用Git中内置的以下标志:

git log --walk-reflogs --grep-reflog "checkout" --oneline
解决方案2:查找包含当前提交的所有分支 查找包含当前已签出的提交的所有分支(本地和远程跟踪分支):

git branch --all --contains HEAD
然后只需检查每个分支的第一次提交,查看给定提交是否是该分支的头:

git log -1 <branch>
git日志-1

感谢。

为了简化
--contains
方法:
git分支--all--contains HEAD
。请记住,在任何可以放置SHA-1值的地方,都可以将名称
rev parse
s添加到该值。请注意,如果您处于“分离头”状态,则不能保证有任何分支名称包含
。(相对较晚的git将
(从中分离)
作为一个伪名称提供给您。)@kostix
head
是一个正确的引用,您不需要大写它就可以工作。@Cupcake,从哪个版本开始?您所使用的系统是否具有不区分大小写的文件系统(Windows或Mac OS X符合要求)?我的意思是,对于普通Git,
HEAD
最终是一个普通文件,可以通过文件系统访问内核调用来查找。@kostix我在Windows上使用Cygwin和msysgit bash
HEAD
是唯一在Linux系统上工作的东西吗?@Cupcake,是的,至少在1.7.x上是这样。不确定Cygwin,但是
head
可以与Git for Windows一起使用(偶尔命名不正确的
msysGit
)。这是NTFS提供的“按设计”:它是一个保留大小写但不区分大小写的文件系统。众所周知,Mac电脑上的HPFS也是如此。