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
GitHub:在本地处理两个分支_Git_Github - Fatal编程技术网

GitHub:在本地处理两个分支

GitHub:在本地处理两个分支,git,github,Git,Github,我正在使用适用于Windows的GitHub应用程序,它工作得很好。但是,我对如何在本地文件上同时处理多个分支感到困惑 假设我将一个存储库克隆到了C:\github,如果我创建了一个新的分支,我的文件结构不会发生任何变化。也就是说,每当我更改一个文件时,它也应该更改主分支,对吗 我怎么能在本地机器上有两个分支,可以单独工作,而不会有任何冲突。所以当我在分支A中更改文件X时,X在主分支中没有更改 注意,我对GitHub和GH桌面非常陌生 注意,我说的是文件系统,不是提交 您要求的行为是git的默

我正在使用适用于Windows的GitHub应用程序,它工作得很好。但是,我对如何在本地文件上同时处理多个分支感到困惑

假设我将一个存储库克隆到了C:\github,如果我创建了一个新的分支,我的文件结构不会发生任何变化。也就是说,每当我更改一个文件时,它也应该更改主分支,对吗

我怎么能在本地机器上有两个分支,可以单独工作,而不会有任何冲突。所以当我在分支A中更改文件X时,X在主分支中没有更改

  • 注意,我对GitHub和GH桌面非常陌生
  • 注意,我说的是文件系统,不是提交

您要求的行为是git的默认行为。当您创建一个新分支时,您实际上是在说您希望从创建分支的地方开始分叉开发历史。一旦您创建了一个分支,对文件所做的所有工作都将发生在该分支中

为了使这更具体,假设您克隆了一个存储库,并且只有一个名为
master
的分支。要创建和签出新分支,您需要执行以下操作:

git checkout -b new_branch
现在,您可以根据需要修改文件X,它,它,如果您想与其他人共享它,它。现在,要在所做更改之前查看X的版本,只需返回
master
分支:

git checkout master

不要把注意力集中在文件系统上。当然,文件已更改,在分支中,它当前已签出。只需在更改文件之前签出您要使用的分支,然后再使用文件。提交后,您可以签出到另一个分支。

您可以从master创建一个简单的本地分支,尝试阅读一些关于它的信息,如果它变得复杂,您也可以使用 这将为您管理分支创建


因此,现在假设您在本地计算机上更改了许多文件,您可以提交这些文件,而无需修改主文件,除非您同步它(合并它)。因此,您可以在不修改母版本身的情况下处理母版的不同副本,除非您想

我觉得其他人没有回答这个问题。我现在遇到了同样的问题。我找到了两种可能的解决办法

方案A

A) 在桌面上创建一个单独的用户帐户,以便您可以在本地拥有多个分支。这不是最佳解决方案

选项B(注意B1和B2都是选项B的一部分,是不同的步骤)

B1)正常创建本地存储库,重命名目录以指示它是另一个分支。然后,转到存储库>删除。这样你就可以再次克隆并重复。现在您将有两个本地分支,github桌面无法识别它们,即使它们可能与其他github项目位于同一目录中。现在使用您想要的任何外部编辑程序处理这些分支

B2)准备好上载时,在github桌面中选择“从硬盘添加现有存储库”,导航到要上载的分支。加上它。Github桌面将识别存储库。现在,您可以使用顶部的下拉列表上传到所选内容的分支。最后,再次转到顶部的repository>remove。然后根据需要继续编辑


选项B可扩展到任意数量的分支,并且不要求您重新安装所有环境。

在您将更改提交到该分支之前,这些更改不是特定于分支的。@TimCastelijns我明白了,但它们是特定于文件系统的。只要我更改了一个文件(无论我是否提交),它就会更改。对吗?似乎我确实需要类似worktree的东西。只要我更改了一个文件(无论是否提交),它就会被更改。对吧?当然,根据定义,同时处理两个分支的最简单方法是让两个工作区处理单独的克隆存储库。如果您不想这样做,那么您必须隐藏或提交工作区中所做的任何更改,以便能够签出不同的分支。一旦我更改了一个文件,它就已经更改(无论是否提交),GH Desktop会告诉我该文件已更改,并要求我提交或不提交。忽略这些更改将使文件返回到以前的状态。@BramVanroy,你说的是真的,我说的是真的。我看不出有什么问题。文件将被视为已更改。如果放弃这些更改,它们将被放弃。如果在分支上提交它们,则可以通过更改分支来更改git存储库的另一个状态。请把问题说清楚