Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git签出新分支:gco-b_Git_Github_Version Control - Fatal编程技术网

Git签出新分支:gco-b

Git签出新分支:gco-b,git,github,version-control,Git,Github,Version Control,场景: 我已经从主分支分支(我们将称之为新的“分支-a”),并且我已经向分支-a提交了代码,但尚未将其合并到主分支中。现在,同事已经从分支a分支分支中分离出来,以构建我的工作(我们将称之为“branch-b”),并提交他的工作,将其推到GitHub。GitHub将其PR显示为“我的所有更改”(分支-a),将其更改(分支-b)显示为“新文件/提交” 问题: 我同事的部门是否可以只显示他所做的更改?他可以等到我合并我的代码,然后我们就知道没问题了。但我只是好奇,这是否有可能显示公关中的差异 我同事的

场景:

我已经从主分支分支(我们将称之为新的“分支-a”),并且我已经向分支-a提交了代码,但尚未将其合并到主分支中。现在,同事已经从分支a分支分支中分离出来,以构建我的工作(我们将称之为“branch-b”),并提交他的工作,将其推到GitHub。GitHub将其PR显示为“我的所有更改”(分支-a),将其更改(分支-b)显示为“新文件/提交”

问题:

我同事的部门是否可以只显示他所做的更改?他可以等到我合并我的代码,然后我们就知道没问题了。但我只是好奇,这是否有可能显示公关中的差异

我同事的部门是否可以只显示他所做的更改

例如,如果你添加了一个全新的文件,让我们称之为“代码> AlpAPILGRIM.TXT < /代码>——然后他修改了该文件,那么会发生什么。如果没有这个文件,他的变化会是什么

为什么会是这样 更深入地说,Git本身将每个提交存储为一个快照:整个源代码的一个新的、完整的、单独的副本。在封面下,文件实际上从一个快照共享到另一个快照,但至少在逻辑概述中,每个快照都与任何以前或以后的快照非常独立,只有一个例外:每个快照还通过“真实名称”(哈希ID)引用其父快照

每个快照的真实名称哈希ID绝对、完全、100%地保证对该快照是唯一的,但在该快照的所有相同副本中都是相同的。事实上,所有Git对象都是如此,包括“blob”(文件存储)对象。1这一思想是Git操作的核心,无论是在内部(在提交等内部)还是外部(获取和推送提交以及发出请求)

因此,pull请求发生的情况是,您,请求ee,将访问权移交给您的存储库和特定的提交。该提交有一个唯一的哈希ID,它允许Git访问其父提交。父级有一个唯一的哈希ID,它允许Git访问提交的父级,可以说是PR的父级。祖父母有一个唯一的哈希ID,它允许Git访问。。。好吧,希望你能在这里明白这一点。:-)这个过程一直重复,直到不管是谁都得到了他们已经拥有的提交,并且他们知道他们拥有它,因为他们拥有它:他们拥有一个具有该ID的提交

因此,要制作一个不依赖于您的提交的PR,您的同事(可能是co先生或女士?——您说的是“他”;我将称他为“M.co”)必须替换/返工当前的一系列提交,这些提交将返回到您的提交,从而返回到所有提交共享的提交。M.Co可以进行一系列新的提交,这些提交与M.Co最初的提交类似,只是它们从共享基分支出来。2

将一系列提交复制到新基的主Git命令是
Git-rebase
。复制这些提交后,它会将当前指向最后一个原始提交的分支名称更改为指向最后一个副本。一旦M.Co重新确定了他的承诺,他/她可以向他们提出新的请求。现在pull ee将获得最新的提交,查看其父ID,查看父项的父项,依此类推,直到到达共享提交,并且追踪此链将找不到任何提交


1有关更多信息,请参阅和。可以对Git哈希进行暴力攻击,而Git的旧版本。。。好吧,它们并没有完全失败,但它们确实表现得相当糟糕:您的新提交无效,或者可能从未做出过,而且有时没有警告会出现这种情况。现有的提交都很好,但是如果您必须
git reset--hard
抛出一个损坏的提交,那就不好了。除了冲突文件之外,所有文件都是可恢复的,但只需要付出一定的代价


2正是在这一点上,M.Co意识到他已经修改了
alphapilgrim.txt
,并且实际上无法以这种方式重新设置基础。当然,除非他没有做过这么可怕的事。但无论哪种情况,M.Co的工作都是将其更改适应旧的基础,减去您为获得快照所做的一切,而快照是M.Co最初提交内容的基础。

非常好,我们将说/解释。好奇心满足了!只是,谢谢你!