当我创建一个新的 git 分支时,我的本地项目文件会发生什么变化?
What happens to my local project files when I create a new git branch?
假设我在本地机器上有一个存储库,一个工作目录,我可以在其中进行更改并推送到远程服务器,我决定添加一个新功能,该功能将及时替换现有功能。
当我创建一个新分支并开始修改我的工作目录时会发生什么?如果我切换到新分支并开始进行更改,这些更改会覆盖我本地机器上的代码,不是吗?
因此,如果我有两个分支,一个 Master 和一个 NewFeature,在我决定合并准备就绪之前,如何在我的本地计算机上维护两者的副本?
这通常是如何完成的?
你在 repo 上有一个名为 .git
的文件夹,这个文件夹包含你的项目在版本控制中所需的所有信息以及关于提交、远程存储库地址等的所有信息。所有这些都是出现在这个文件夹中。它还包含一个日志,用于存储您的提交历史记录,以便您可以回滚到历史记录。
当您在 Master
分支上工作时,您的本地文件夹中有 Master
分支的文件。
当您 运行 命令 git checkout NewFeature
并且在此分支中对 Master
分支进行任何更改时,您的本地文件夹将用 [=16] 覆盖 Master
=] 变化。
但是你不会丢失你的Master
分支内容,它保存在.git
文件夹中,当你返回Master
您的本地文件夹将再次更改。
所以 - 您不需要维护您的 2 个分支,GIT 会为您完成。
What happens when I create a new branch and start modifying my working directory?
Git 分支实际上是指向更改快照的指针。
如果您只是创建一个新分支而不切换到它:
git branch <my_branch>
您仍在本地 master 分支上更改 master 分支结帐时留在工作目录中的文件,并在此 git 分支命令之前在本地和 master 分支上进行了进一步更改。
通过
创建并切换到my_branch(关闭主分支)
git checkout -b <my_branch>
相当于:
git branch <my_branch>
git checkout <my_branch>
所以它会从你的 master 当前位置创建 my_branch 并立即切换到它,这意味着你的工作目录文件将处于 master 的状态,因为现在在这个新的 my_branch 上维护.
If I switch to the new branch and start making changes, those changes are overwriting code on my local machine, are they not?
本地更改会覆盖工作目录的状态,即您刚刚切换到的分支状态。
您的 master 分支状态未更改,可以通过 git checkout master.
恢复
如果您是 git 的新手,请按照 Atlassian 的 git 教程进行操作:
https://www.atlassian.com/git/tutorials/using-branches
基本上从一开始就开始培养你的 git 技能。
由于您还不了解 git 内部结构,请离开 .git/ 目录。
这是你的整个 git 回购实现,包含你所有的文件数据和 git 元数据(包括所有分支),以允许你的 git 在它旁边的工作区上工作。
这个 .git/ 目录是在 git 初始化命令之后创建的,当你设置新的 repo
或者在结帐过程从中恢复工作目录文件之前由 git clone 克隆。
So if I have two branches, one Master and one NewFeature, how can I maintain copies of both on my local machine up until I decide merging is ready?
Git 在 .git/ 目录 repo 中为您完成,仅将您当前工作的分支的内容签出到工作区(您的 repo 的工作目录)中。
祝您顺利完成 git 教程并理解 git 实际工作原理的概念。下一步将是学习不同的 git 工作流程 https://www.atlassian.com/git/tutorials/comparing-workflows 和 select 在您的项目中使用的工作流程。
假设我在本地机器上有一个存储库,一个工作目录,我可以在其中进行更改并推送到远程服务器,我决定添加一个新功能,该功能将及时替换现有功能。
当我创建一个新分支并开始修改我的工作目录时会发生什么?如果我切换到新分支并开始进行更改,这些更改会覆盖我本地机器上的代码,不是吗?
因此,如果我有两个分支,一个 Master 和一个 NewFeature,在我决定合并准备就绪之前,如何在我的本地计算机上维护两者的副本?
这通常是如何完成的?
你在 repo 上有一个名为 .git
的文件夹,这个文件夹包含你的项目在版本控制中所需的所有信息以及关于提交、远程存储库地址等的所有信息。所有这些都是出现在这个文件夹中。它还包含一个日志,用于存储您的提交历史记录,以便您可以回滚到历史记录。
当您在 Master
分支上工作时,您的本地文件夹中有 Master
分支的文件。
当您 运行 命令 git checkout NewFeature
并且在此分支中对 Master
分支进行任何更改时,您的本地文件夹将用 [=16] 覆盖 Master
=] 变化。
但是你不会丢失你的Master
分支内容,它保存在.git
文件夹中,当你返回Master
您的本地文件夹将再次更改。
所以 - 您不需要维护您的 2 个分支,GIT 会为您完成。
What happens when I create a new branch and start modifying my working directory?
Git 分支实际上是指向更改快照的指针。
如果您只是创建一个新分支而不切换到它:
git branch <my_branch>
您仍在本地 master 分支上更改 master 分支结帐时留在工作目录中的文件,并在此 git 分支命令之前在本地和 master 分支上进行了进一步更改。
通过
创建并切换到my_branch(关闭主分支) git checkout -b <my_branch>
相当于:
git branch <my_branch>
git checkout <my_branch>
所以它会从你的 master 当前位置创建 my_branch 并立即切换到它,这意味着你的工作目录文件将处于 master 的状态,因为现在在这个新的 my_branch 上维护.
If I switch to the new branch and start making changes, those changes are overwriting code on my local machine, are they not?
本地更改会覆盖工作目录的状态,即您刚刚切换到的分支状态。 您的 master 分支状态未更改,可以通过 git checkout master.
恢复如果您是 git 的新手,请按照 Atlassian 的 git 教程进行操作: https://www.atlassian.com/git/tutorials/using-branches 基本上从一开始就开始培养你的 git 技能。
由于您还不了解 git 内部结构,请离开 .git/ 目录。 这是你的整个 git 回购实现,包含你所有的文件数据和 git 元数据(包括所有分支),以允许你的 git 在它旁边的工作区上工作。 这个 .git/ 目录是在 git 初始化命令之后创建的,当你设置新的 repo 或者在结帐过程从中恢复工作目录文件之前由 git clone 克隆。
So if I have two branches, one Master and one NewFeature, how can I maintain copies of both on my local machine up until I decide merging is ready?
Git 在 .git/ 目录 repo 中为您完成,仅将您当前工作的分支的内容签出到工作区(您的 repo 的工作目录)中。
祝您顺利完成 git 教程并理解 git 实际工作原理的概念。下一步将是学习不同的 git 工作流程 https://www.atlassian.com/git/tutorials/comparing-workflows 和 select 在您的项目中使用的工作流程。