我创建了一个中央存储库(protocol:file),我想使用它来保持我在工作笔记本电脑和工作台式机上所做的工作同步。 我能够从仓库中推送和获取文件,但不清楚如何合并。 据我了解,文件存放在中央仓库中后,每台计算机将具有一个本地主机/磁头和一个远程主机/磁头。 本地主机/机头被认为是远程服务器的一个分支,因此每次我提交并推送新的分支时,都会在中央存储库中显示该分支。这是显示我如何创建上述结构Working with GIT4Windows, shared folder and two computers-is this workflow correct?
的链接我以为我已经完成了,我计划稍后再开始工作(今天是“以后”),今天我意识到我忽略了某些方面。
考虑这种情况:
-在笔记本电脑上创建了新的模块/功能
-在桌面上创建了新的模块/功能
-每台计算机将其更改推送到中央存储库
-现在,每台计算机都可以检出另一台计算机的新模块,并将其合并到本地主机中,并且两台计算机是同步的,但是中央存储区只有两个分支(便携式计算机和台式机)。
如果第三方想要访问中央存储库,会发生什么?克隆回购协议时,用户将获得一个来源/主服务器和两个分支,其中一个用于台式机,一个用于笔记本电脑,这会造成混乱。
将中央仓库中的两个分支合并的工作流程是什么?这是使用此设置的正确方法吗?
答案 0 :(得分:1)
似乎有些轻微的误解,所以让我们设法消除它们:
据我了解,文件存放在中央仓库中后,每台计算机将具有本地主机/磁头和远程主机/磁头。
两个存储库都应有一个master
分支,正确。 head
与所有这些都无关,我认为您是在滥用这个词。
本地主机/机头被认为是远程服务器的一个分支,因此每次我提交并推送新分支时,都会在中央存储库中显示该信息。
本地主机是本地分支。是 tracking 远程主机,是的,但是它们是两个不同的分支。跟踪意味着该分支将从X提取并推入X ,但是它们仍然是两个可以独立发展的分支。我对您的声明a new branch shows up in the central repo
感到特别困惑,因为当您从master推送到master时,没有新的分支出现,master已经存在。不过,一些新的提交会显示在master上。
考虑这种情况: -在笔记本电脑上创建了新的模块/功能 -在桌面上创建了新的模块/功能 -每台计算机将其更改推送到中央存储库 -现在,每台计算机都可以检出另一台计算机的新模块,并将其合并到本地主机中,并且两台计算机处于同步状态,但是 中央仓库只有两个分支(笔记本电脑一个和台式机 一个)。
如果第三方想要访问中央存储库,会发生什么?它 将会令人困惑,当克隆仓库时,用户会得到一个 源/主和两个分支,一个用于桌面,一个用于 笔记本电脑。
您缺少工作流程中的重要步骤,即合并。 git有不同的工作流,但是它们几乎共享一个真实的事实:只有一个分支可以收集所有更改,并且可能从一个功能分支中合并了所有更改。但是直接在master上工作并没有错。既然又是-从技术上来说,您的本地主机和远程主机是两个分支,则可以直接在本地主机上工作,并且在准备“释放”代码时,请推送到远程主机。您可能需要先获取尚未收到的新提交,但是它可以工作。 现在,您当然可以在不同的分支机构中工作了。一些git工作流为每个功能建议一个分支(GitHub的pull-requests使用此模型工作),或者为每台计算机或开发人员一个分支。但是每隔一段时间,您需要收集在不同分支中所做的所有更改,并将它们放在单个分支(通常是主分支)中,这意味着您需要将更改合并到主分支中。什么时候以及如何取决于您。通常,一个人会在开发分支上工作一段时间,直到某个功能稳定并开始工作,然后合并。在这种情况下,master会始终包含稳定的软件,而您的开发分支则包含尚未完成的功能。