创建新的git分支后,本地项目文件会怎样?

时间:2018-08-23 19:57:48

标签: git merge branch

假设我在本地计算机上有一个存储库,在我进行更改并推送到远程的工作目录中,我决定要添加一个新功能,该功能将及时替换就地功能。

当我创建一个新分支并开始修改工作目录时会发生什么?如果我切换到新分支并开始进行更改,那么这些更改将覆盖本地计算机上的代码,不是吗?

因此,如果我有两个分支,一个主服务器和一个NewFeature,如何在我的本地计算机上维护这两个服务器的副本,直到我确定合并准备就绪?

通常如何进行?

2 个答案:

答案 0 :(得分:1)

您在存储库上有一个名为.git的文件夹,该文件夹包含版本控制中项目所需的所有信息,以及有关提交,远程存储库地址等的所有信息。这个文件夹。它还包含一个日志,该日志存储您的提交历史记录,以便您可以回滚到历史记录。

Master分支上工作时,在本地文件夹上有Master分支的文件。

运行命令git checkout NewFeature并在此分支中对Master分支进行任何更改时,您的本地文件夹将被Master更改覆盖NewFeature

但是您不会丢失Master分支内容,它会保存在.git文件夹中,当您返回到Master时,本地文件夹会再次更改。

所以-您没有自己的2个分支机构,GIT会为您完成。

答案 1 :(得分:1)

  

当我创建一个新分支并开始修改我的工作目录时会发生什么?

Git分支实际上是指向更改快照的指针。

如果您仅创建新分支而不用以下方法切换到该分支:

    git branch <my_branch>

您仍然在本地master分支上,通过master分支签出将文件保留在工作目录中,并在执行git branch命令之前在本地和master分支上进行了进一步的更改。

通过创建并切换到my_branch(关闭主分支)

    git checkout -b <my_branch>

等效于:

    git branch <my_branch>
    git checkout <my_branch>

因此它将在您的主控当前位置之外创建my_branch并立即切换到它,这意味着您的工作目录文件将从主控状态进入,因为从现在开始就在此新的my_branch上进行维护。

  

如果我切换到新分支并开始进行更改,那么这些更改将覆盖本地计算机上的代码,不是吗?

本地更改将覆盖工作目录的状态以及刚刚切换到的分支状态。 您的master分支状态保持不变,可以通过git checkout master恢复。

如果您不熟悉git,请遵循Atlassian的git教程: https://www.atlassian.com/git/tutorials/using-branches 并基本上从一开始就开始培养您的git技能。

由于您尚不了解git内部原理,因此请保留.git /目录。 这是整个git repo的实现,其中包含所有文件数据和git元数据(包括所有分支),以允许git在其旁边的工作区上工作。 当您设置新的仓库时,这个.git /目录是在git init命令之后创建的 或由git clone克隆,然后在结帐过程中从其中还原工作目录文件。

  

因此,如果我有两个分支,一个主服务器和一个NewFeature,如何在我的本地计算机上维护这两个服务器的副本,直到我确定合并准备就绪?

Git在.git /目录存储库中为您执行此操作,仅将您当前工作的分支的内容检出到工作区(存储库的工作目录)中。

祝您在完成git教程和理解git实际工作原理时万事如意。下一步将是学习不同的git工作流程https://www.atlassian.com/git/tutorials/comparing-workflows,然后选择一个可在您的项目中使用的

相关问题