相关疑难解决方法(0)

如何在Git中获取当前分支名称?

我来自Subversion背景,当我有一个分支时,我知道我正在处理的是"这些工作文件指向这个分支".

但是对于Git,我不确定我何时在NetBeans或Notepad ++中编辑文件,无论它是与主服务器还是其他分支相关联.

git在bash中没有问题,它告诉我我在做什么.

git branch git-branch

2321
推荐指数
37
解决办法
136万
查看次数

如何通过提交消息搜索Git存储库?

我使用提交消息"Build 0051"检查了一些源代码到GIT中.

但是,我似乎无法再找到源代码 - 如何使用命令行从GIT存储库中提取此源代码?

更新

  1. 使用SmartGIT检查版本0043,0044,0045和0046.
  2. 检出0043,并检查其他分支上的版本0051.
  3. 再次检查0043.
  4. 现在,0051已经消失了.

更新

源代码肯定存在,现在需要检查它:

C:\Source>git log -g --grep="0052"
commit 77b1f718d19e5cf46e2fab8405a9a0859c9c2889
Reflog: HEAD@{10} (unknown <Mike@.(none)>)
Reflog message: commit: 20110819 - 1724 - GL: Intermediate version. File version:  v0.5.0 build 0052.
Author: unknown <Mike@.(none)>
Date:   Fri Aug 19 17:24:51 2011 +0100

    20110819 - 1724 - GL: Intermediate version. File version: v0.5.0 build 0052.

C:\Source>
Run Code Online (Sandbox Code Playgroud)

更新

使用以下内容检索丢失的源代码:

C:\Source>git log -g --grep="0052"
commit 77b1f718d19e5cf46e2fab8405a9a0859c9c2889
Reflog: HEAD@{10} (unknown <Mike@.(none)>)
Reflog message: commit: 20110819 - 1724 - GL: …
Run Code Online (Sandbox Code Playgroud)

git git-log

761
推荐指数
10
解决办法
34万
查看次数

为什么git默认执行快进合并?

来自mercurial,我使用分支来组织功能.当然,我也想在我的历史中看到这种工作流程.

我使用git开始了我的新项目并完成了我的第一个功能.合并该功能时,我意识到git使用快进,即如果可能,它会将我的更改直接应用到主分支并忘记我的分支.

因此,思考未来:我是唯一一个从事这个项目的人.如果我使用git的默认方法(快进合并),我的历史将导致一个巨大的主分支.没有人知道我为每个功能使用了一个单独的分支,因为最后我只有那个巨大的主分支.这看起来不专业吗?

通过这种推理,我不想要快进合并,也不知道为什么它是默认的.这有什么好处的?

git git-merge fast-forward git-branch

637
推荐指数
2
解决办法
15万
查看次数

找到Git分支的父分支

假设我有以下本地存储库,其中包含如下提交树:

master --> a
            \
             \
      develop c --> d
               \
                \
         feature f --> g --> h
Run Code Online (Sandbox Code Playgroud)

master是我的这是最新的稳定版本代码,develop是我的这个'下一个'版本代码,feature一个正在准备的新功能develop.

我希望能够使用钩子在我的远程仓库上做什么,feature除非提交fdevelopHEAD 的直接后代,否则推送被拒绝.即提交树看起来像这样,因为功能已经git rebase打开d.

master --> a
            \
             \
      develop c --> d
                     \
                      \
               feature f --> g --> h
Run Code Online (Sandbox Code Playgroud)

那么有可能:

  • 确定父分支feature
  • 识别父分支中的提交,它f是后代的?

从那里我将检查父分支的HEAD是什么,并查看f前任是否与父分支HEAD匹配,以确定该特征是否需要重新定位.

git branch

387
推荐指数
14
解决办法
33万
查看次数

Git log只能获取特定分支的提交

我想列出仅属于特定分支的所有提交.

通过以下内容,它列出了分支中的所有提交,但也列出了父(主)的提交

git log mybranch
Run Code Online (Sandbox Code Playgroud)

我找到的另一个选项是排除master可以访问的提交并给我我想要的东西,但我想避免需要知道其他分支名称.

git log mybranch --not master
Run Code Online (Sandbox Code Playgroud)

我试图使用git for-each-ref,但它也列出了mybranch所以实际上它排除了所有:

git log mybranch --not $(git for-each-ref --format '^%(refname:short)' refs/heads/)
Run Code Online (Sandbox Code Playgroud)

更新:

我正在测试我刚才发现的一个新选项,直到现在看来这可能是我想要的:

git log --walk-reflogs mybranch
Run Code Online (Sandbox Code Playgroud)

更新(2013-02-13T15:08):

--walk-reflogs选项很好,但我检查了reflogs是否到期(默认为90天,gc.reflogExpire).

我想我找到了我想要的答案:

git log mybranch --not $(git for-each-ref --format='%(refname)' refs/heads/ | grep -v "refs/heads/mybranch")
Run Code Online (Sandbox Code Playgroud)

我只是从可用分支列表中删除当前分支,并使用该列表从日志中排除.这样我只能获得mybranch才能达到的提交.

git

194
推荐指数
7
解决办法
14万
查看次数

查找包含特定提交的合并提交

想象一下以下历史:

       c---e---g--- feature
      /         \
-a---b---d---f---h--- master
Run Code Online (Sandbox Code Playgroud)

如何将提交"c"合并到主服务器中(即查找合并提交"h")?

git

158
推荐指数
9
解决办法
5万
查看次数

给定提交ID,如何确定当前分支是否包含提交?

我正在尝试做的是版本检查.我想确保代码保持在最低版本之上.所以我需要一种方法来知道当前分支是否包含指定的提交.

git

114
推荐指数
6
解决办法
5万
查看次数

在Git中查找提交ID的提交日志

我想查看ID提交.例如,我想知道为该ID提交的代码,例如:

git log <commit_id>
Run Code Online (Sandbox Code Playgroud)

这将显示与此ID对应的已提交代码和提交消息.

git

58
推荐指数
2
解决办法
7万
查看次数

git如何找到分支源自的提交哈希

假装我从我的主分支分支到主题分支,然后我在我的主题分支上做了一些提交.是否有一个命令告诉我主分支上的提交哈希来自我的主题分支?

理想情况下,我不必知道我做了多少次提交(试图避免使用HEAD ^ 5).

我用谷歌搜索过,似乎无法找到答案.谢谢!

git git-branch

51
推荐指数
3
解决办法
2万
查看次数

GIT - 我从哪里开始分支?

我回到了一个旧的项目,我跑了很好的git status去弄清楚发生了什么,我注意到了太多的分支!我想在开始再次工作之前做一些家务,但我不确定哪个分支来自哪个..

EG"branchA"是否来源于"发展"?"branchB"是否来自"master"或"branchA"?

我如何回答上面的示例问题?

git branch git-branch

44
推荐指数
5
解决办法
2万
查看次数

标签 统计

git ×10

git-branch ×4

branch ×3

fast-forward ×1

git-log ×1

git-merge ×1