相关疑难解决方法(0)

用Git找到分支点?

我有一个存储库,其中包含分支主服务器和A以及两者之间的大量合并活动.当基于master创建分支A时,如何在我的存储库中找到提交?

我的存储库基本上是这样的:

-- X -- A -- B -- C -- D -- F  (master) 
          \     /   \     /
           \   /     \   /
             G -- H -- I -- J  (branch A)
Run Code Online (Sandbox Code Playgroud)

我正在寻找修订版A,这不是git merge-base (--all)找到的.

git branch

420
推荐指数
11
解决办法
16万
查看次数

Git提交范围中双点".."和三点"..."之间有什么区别?

一些Git命令采用提交范围,一个有效语法是用两个点分隔两个提交名称..,另一个语法使用三个点....

两者有什么不同?

git git-diff git-log

380
推荐指数
4
解决办法
6万
查看次数

GitHub pull请求显示已经在目标分支中的提交

我正在尝试将GitHub上的拉取请求检查到非主的分支.目标分支在master之后,pull请求显示master的提交,所以我合并master并将其推送到GitHub,但是它们的提交和差异仍然在刷新后出现在pull请求中.我加倍检查GitHub上的分支是否有来自master的提交.为什么他们仍然出现在拉动请求中?

我还在本地检查了pull请求,它只显示了未合并的提交.

git merge commit github pull-request

99
推荐指数
10
解决办法
5万
查看次数

Git分支从哪里开始,它的长度是多少?

偶尔我会被问到,git上某个分支的启动是什么,或者是否在特定分支上创建了某个提交.分支的终点非常清楚:分支标签所在的位置.但是 - 它从哪里开始?琐碎的答案是:在我们创建该分支的那个提交上.但据我所知,这些信息就是为什么我会问这个问题,在第一次提交后丢失了.

只要我们知道我们分支的提交,我们就可以绘制图表来说明:

A - B - C - - - - J     [master]
     \
      D - E - F - G     [branch-A]
           \
            H - - I     [branch-B]
Run Code Online (Sandbox Code Playgroud)

我在提交时创建了branch-B,E这就是"开始".我知道,因为我做到了.但其他人能否以同样的方式认识到它?我们可以绘制相同的图形:

A - B - C - - - - J     [master]
     \
      \       F - G     [branch-A]
       \     /
        D - E
             \
              H - I     [branch-B]
Run Code Online (Sandbox Code Playgroud)

所以,现在看图表,哪个分支开始E,哪一个在B?提交D两个分支的成员还是我们可以清楚地决定它是属于分支A还是分支B?

这听起来有点哲学,但实际上并非如此.监事有时想知道,当一个分支已经开始(它通常标志着一个任务开始)和其分支的一些变化属于(得到一些改变的目的 - 是它需要的工作),我会想知道git是否提供信息(工具,命令)或定义来正确回答这些问题.

git version-control git-branch

64
推荐指数
8
解决办法
1万
查看次数

我怎样才能看到另一个分支从哪个分支分叉?

我的git存储库有三个分支devel,stablecustomers/acme_patches.很久以前,它stable是分叉的devel,并且所有的错误修正都发生在stable.时不时地stable被合并回来devel.customers/acme_patches是一个具有一些客户特定补丁的分支.该分支未合并为develstable.

一些ASCII艺术来说明场景:

            o---o---o          customers/acme_patches?
           /
  o---o---1---o---o---o        stable
 /     \           \
o---o---o---2---o---o---o---o  devel
             \
              o---o---o        customers/acme_patches?

现在我想知道:

customers/acme_patches分叉的是什么分支- devel或者stable?我只是知道它过去曾分离过其中一个,但我不知道哪个.例如它可能已经提交12在上图中.

我一直在玩git log --oneline --graph,gitk但自从customers/acme_patches分开了几百次提交之后,很难按照画出的线条.

是否有一个快速命令(一个小脚本也可以),它可以以某种方式跟随提交customers/acme_patches向后找到第一个提交有两个孩子(叉点),然后确定是否在stable或在中提交devel

在最好的情况下,我可以执行类似的操作(请原谅,我在Windows上):

C:\src> git fork-origin customers/acme_patches
stable
Run Code Online (Sandbox Code Playgroud)

git branch

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

如何在git中找到分支的起源?

假设我的项目包含两个主服务器(master和master_ios),我想知道功能分支的来源是什么(按原点,我的意思是功能分支所依据的分支),我将如何在git中完成此操作?

干杯

git branch

16
推荐指数
3
解决办法
1万
查看次数

如何在原始分支中压缩提交后进行重组?

我有

A--B--C master
       \
        D branch0
Run Code Online (Sandbox Code Playgroud)

然后,我壁球BCB'.我如何变形branch0,看起来像这样:

A--B' master
    \
     D branch0
Run Code Online (Sandbox Code Playgroud)

git rebase git-rebase

13
推荐指数
2
解决办法
2090
查看次数

参考Git分支开始提交

我试图找到如何从脚本引用分支启动提交.我指的是分支分支的提交sha.

此外,我希望它适用于svn repo制作的历史.

这篇文章只是首次提交了repo创建,而不是功能分支启动提交.

git reference commit

12
推荐指数
1
解决办法
3541
查看次数

找出创建git分支的时间(不是第一次提交到该分支)

我如何知道何时创建了一个git分支?

我不想知道什么时候第一次提交到那个分支.我想知道什么时候创建了这个分支.

这是一个重现一个工作示例的脚本:

#! /bin/bash
set -x
set -e

mkdir test
cd test
git init
echo "hello" >readme
git add readme
git commit -m "initial import"
date

sleep 5
git checkout -b br1
date                   # this is the date that I want to find out.

sleep 5
echo "hello_br1" >readme
git commit -a -m "hello_br1"
date

echo "hello_br1_b" >readme
git commit -a -m "hello_br1_b"

git checkout master
echo "hello_master" >readme
git commit -a -m "hello_master"

git branch -a; 
git log …
Run Code Online (Sandbox Code Playgroud)

git git-branch

11
推荐指数
2
解决办法
4万
查看次数

如何在git中获取传入提交的列表,以便在钩子中获取新分支

我正在编写一个预接收挂钩,在接受推送提交之前进行一些验证.它适用于现有分支,因为我使用以下git命令来获取传入提交的列表:

git rev-list $old_sha1..$new_sha1
Run Code Online (Sandbox Code Playgroud)

但是,如果用户将新分支推送到共享存储库,则上述命令将失败,因为old_sha1全为零.所以问题是我如何获得新创建的分支的传入提交列表.做git rev-list $new_sha1不起作用,因为它直到开始时才进行所有修改.有没有办法指定这样的东西:

git rev-list $branching_sha1..$new_sha1
Run Code Online (Sandbox Code Playgroud)

git hook

8
推荐指数
1
解决办法
1762
查看次数

如何在Git中出现纵横交错的合并?

我一直在浏览"git merge-base",手册页,我无法理解多个合并库是如何发展的.具体来说,我挂在手册页中的下图中:

When the history involves criss-cross merges, there can be more than one best common
ancestor for two commits. For example, with this topology:
  ---1---o---A
      \ /
       X
      / \
  ---2---o---o---B
both 1 and 2 are merge-bases of A and B. Neither one is better than the other (both
are best merge bases). When the --all option is not given, it is unspecified which
best one is output.
Run Code Online (Sandbox Code Playgroud)

我无法理解如何创造这种情况.我试图使用测试存储库在分支之间重新创建这种纵横交错的合并情况,但我无法复制它.在所有情况下,我总是最终得到A和B指向的1个合并提交(而不是A和B指向独立的合并提交,如图所示).

谁能说明这种情况会怎样?这是常见情况还是错误情况?

git git-merge least-common-ancestor

6
推荐指数
1
解决办法
2352
查看次数

找到两个以上分支的共同祖先

找到两个git分支的共同祖先 - 这个问题解释了如何显示两个分支的共同祖先.

git merge-base branch1 branch2
Run Code Online (Sandbox Code Playgroud)

但是,我希望看到三个或更多分支的共同祖先.起初,我认为这会奏效.

git merge-base branch1 branch2 branch3 branch4
Run Code Online (Sandbox Code Playgroud)

但它实际上并没有回归所有分支的共同祖先; 正如文档所述

给定三个提交A,BC,git merge-base A B C将计算A和假设提交M之间的合并基础,这是BC之间的合并

这不是我想要的.

你如何找到两个以上分支的共同祖先提交?

git branching-and-merging git-branch

4
推荐指数
1
解决办法
398
查看次数

Atlassian Stash表示第二次拉取请求是远程合并的

有两个不同的拉取请求:A和B.当A拉请求已经合并到Stash中的master时,Stash显示拉取请求B已被远程合并 (但它没有!).它以某种方式自动运作.没有钩子.

我试过跑:

git log --merges
Run Code Online (Sandbox Code Playgroud)

但我看不到B的合并提交

你能帮忙吗?

git树如下:

*   c8372e0 (HEAD, master) Merge branch 'master' of http://...
|\
| *   b091241 (origin/master, origin/HEAD) Merge pull request #193 in ...
| |\
| | * 629fb1f (origin/feature/A Fix
...
| | * e9042fb (origin/feature/B) 
| | *   d84a03c Merge branch 'master' into feature/B
Run Code Online (Sandbox Code Playgroud)

git merge pull-request bitbucket-server

4
推荐指数
1
解决办法
1703
查看次数