假设我在本地计算机上有一个存储库,在我进行更改并推送到远程的工作目录中,我决定要添加一个新功能,该功能将及时替换就地功能。
当我创建一个新分支并开始修改工作目录时会发生什么?如果我切换到新分支并开始进行更改,那么这些更改将覆盖本地计算机上的代码,不是吗?
因此,如果我有两个分支,一个主服务器和一个NewFeature,如何在我的本地计算机上维护这两个服务器的副本,直到我确定合并准备就绪?
通常如何进行?
答案 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,然后选择一个可在您的项目中使用的
。