Git 如何复制分支及其所有数据?

Git 如何复制分支及其所有数据?,git,Git,我对如何创建一个重复的新分支有点困惑 我有一个名为abc的github分支,现在我想用不同的名称创建该分支的精确副本,例如def,def中的所有数据都应该与abc分支完全相似唯一的区别应该是分支的名称 我已经克隆了回购协议并使用 git clone https://...url git checkout abc 我还要做什么 git checkout -b def 这将告诉git签出一个新的本地分支,这就是-b所做的所谓的def 这将告诉git签出一个新的本地分支,这就是-b所谓的def只需

我对如何创建一个重复的新分支有点困惑

我有一个名为abc的github分支,现在我想用不同的名称创建该分支的精确副本,例如def,def中的所有数据都应该与abc分支完全相似唯一的区别应该是分支的名称

我已经克隆了回购协议并使用

git clone https://...url
git checkout abc
我还要做什么

git checkout -b def
这将告诉git签出一个新的本地分支,这就是-b所做的所谓的def


这将告诉git签出一个新的本地分支,这就是-b所谓的def

只需从abc创建一个新分支:

如果要在创建新分支时也切换到该分支,请使用:

git checkout -b def
请注意,分支实际上只是指向提交的指针。因此,要创建abc的副本,不需要移动太多,只需要创建一个对abc的头提交的新引用

要将def分支推送到GitHub,您可以使用以下方法:

git push origin def

只需从abc创建一个新分支:

如果要在创建新分支时也切换到该分支,请使用:

git checkout -b def
请注意,分支实际上只是指向提交的指针。因此,要创建abc的副本,不需要移动太多,只需要创建一个对abc的头提交的新引用

要将def分支推送到GitHub,您可以使用以下方法:

git push origin def
我对如何创建一个重复的新分支有点困惑

我相信大部分的困惑来自于对分支是什么缺乏理解

因为Git中的分支实际上是一个包含 提交所指向的字符SHA-1校验和,分支为 制造和破坏都很便宜。创建一个新的分支是快速而有效的 简单到将41个字节写入一个文件40个字符和换行符

因此,分支只是指向提交的指针。如果您创建一个指向同一提交的新指针,您将拥有该分支的副本。正如其他人已经指出的,转到要克隆的分支所指向的提交,并运行git switch-c newBranch或git checkout-b newBranch或git branch newBranch,您将创建一个指向同一提交的新指针

从这里开始,这两个分支可能会出现分歧,但只要导致提交的历史完整无缺,它们将显示相同的内容

您的内容是通过跟踪分支所指向的提交中以前的编辑来定义的

一些后果:

只要引用的提交存在,两个分支都将显示相同的历史记录,而不管您做了什么更改 如果一个分支向前移动到一个新的提交,即原始引用提交的子级,则该分支将包括另一个分支,直到它们发散为止; 如果您选择了其中一个分支,即如果您重新设置引用提交的基础,那么事情可能会变得模糊,并且您可能会中断其他人的工作。查看git scm上的图片:它们使用向后箭头更好地表示如何读取分支; 如果你想及时冻结复制的分支,你应该考虑一个。与分支不同,标记并不意味着要四处移动,但最终它是对特定提交的引用。与分支一样,了解引用提交的SHA将允许您重新跟踪历史并获得重复的内容,但与分支不同的是,它不适用于活动开发。 我有一个名为abc的github分支,现在我想用不同的名称创建该分支的精确副本,例如def,def中的所有数据都应该与abc分支完全相似唯一的区别应该是分支的名称

最后,你没有。与上述来源相同

与大多数旧VCS工具的分支方式形成鲜明对比,后者涉及将项目的所有文件复制到第二个目录中

在git中,您不是复制或复制,只是创建一个新的、可浮动的时间点引用。因此,您只需复制指针,而不是内容

我对如何创建一个重复的新分支有点困惑

我相信大部分的困惑来自于对分支是什么缺乏理解

因为Git中的分支实际上是一个包含 提交所指向的字符SHA-1校验和,分支为 制造和破坏都很便宜。创建一个新的分支是快速而有效的 简单到将41个字节写入一个文件40个字符和换行符

因此,分支只是指向提交的指针。如果您创建一个指向同一提交的新指针,您将拥有该分支的副本。正如其他人已经指出的,转到要克隆的分支所指向的提交,并运行git switch-c newBranch或git checkout-b newBranch或git branch newBranch,您将创建一个指向同一提交的新指针

从这里开始,这两个分支可能会出现分歧,但只要导致提交的历史完整无缺,它们将显示相同的内容

您的内容是define d通过跟踪分支所指向的提交中以前的编辑

一些后果:

只要引用的提交存在,两个分支都将显示相同的历史记录,而不管您做了什么更改 如果一个分支向前移动到一个新的提交,即原始引用提交的子级,则该分支将包括另一个分支,直到它们发散为止; 如果您选择了其中一个分支,即如果您重新设置引用提交的基础,那么事情可能会变得模糊,并且您可能会中断其他人的工作。查看git scm上的图片:它们使用向后箭头更好地表示如何读取分支; 如果你想及时冻结复制的分支,你应该考虑一个。与分支不同,标记并不意味着要四处移动,但最终它是对特定提交的引用。与分支一样,了解引用提交的SHA将允许您重新跟踪历史并获得重复的内容,但与分支不同的是,它不适用于活动开发。 我有一个名为abc的github分支,现在我想用不同的名称创建该分支的精确副本,例如def,def中的所有数据都应该与abc分支完全相似唯一的区别应该是分支的名称

最后,你没有。与上述来源相同

与大多数旧VCS工具的分支方式形成鲜明对比,后者涉及将项目的所有文件复制到第二个目录中

在git中,您不是复制或复制,只是创建一个新的、可浮动的时间点引用。因此,您只需复制指针,而不是内容


取决于“复制”的含义,您可以在与现有分支相同的点上创建新分支。分支只是图形上的指针。这两个分支将指向相同的commitDepends,您的意思是“复制”,您可以在同一点创建新分支,因为现有分支只是图形上的指针。这两个分支机构将指向同一个委员会,这也反映在我的github在线帐户中?当我更改为def时,它会影响abc吗?我上面建议的两个命令在本地运行,并且在您选择推送def分支之前/时在GitHub中不可见。在这一点上,是的,def分支将出现在远程分支列表中。您是否可以更新关于如何推送def分支的答案?这仅仅是git推送吗?这会反映在我的github在线帐户中吗?当我更改为def时,它会影响abc吗?我上面建议的两个命令在本地运行,并且在您选择推送def分支之前/时在GitHub中不可见。在这一点上,是的,def分支将出现在远程分支列表中。您是否可以更新关于如何推送def分支的答案?这只是一个git推吗?