创建同一个重复文件夹的不同分支

时间:2018-05-14 09:04:00

标签: git git-branch git-commit

我正在研究一个项目,我的git知识是基本的。尝试将分支合并到主分支,但具有不同的功能,我想用我的基本逻辑解决这个问题(我正在寻求轻松),即使它不是处理问题的最佳方式。 / p>

我复制了具有不同名称的相同项目文件夹,试图创建具有功能名称的分支。所有功能都可以在不同的文件上运行,有时也可以在同一个文件上运行,但是我希望将不同的消息提交到不同的分支,然后将它们与主分支逐个合并。

第一个挑战,就是为什么我去不同的文件夹,我得到相同的分支名称。我可以根据功能重命名分支。

这是一个有效的工作流程吗?

1 个答案:

答案 0 :(得分:1)

在git中,创建文件夹的副本以处理不同的功能并不常见,因为分支是如此轻量级,并且很容易在单个文件夹中切换分支。

然而,如果项目很大,设置很复杂,或者每个功能都需要大量外部配置来测试,那么在单独的文件夹中工作可能更容易。

对于git,每个文件夹都是一个单独的存储库,因此假设您有功能X,Y和github repo G的文件夹,那么这意味着您实际上有3个单独的存储库:X,Y和G.

执行所需操作的一种方法是首先根据需要准备功能仓库X,然后使用git pull / push将其与G同步。然后准备要素回购Y并将其与G同步。

最后你仍然会有3个单独的repos,但每个都有分支feature-x,feature-y和master具有相同的提交。

因此,如果您在文件夹X中从当前状态创建分支“feature-x”并切换到您将使用的分支:

git checkout -b feature-x

我想你已经提交了你的提交,git log看起来很好。

然后通过执行git push与“G”同步。这会将分支feature-x和您的新提交添加到G。

此时你可以实际访问github并创建一个可以通过Web界面合并到master的pull请求。

如果您不想通过拉取请求Web UI进行操作,那么您只需先将文件夹X中的主分支准备到您想要的状态,最简单的地方是:

git checkout master
git merge feature-x

然后使用git push同步X和G的主分支。

最后对Y和其他功能重复相同的过程。

注意:在feature repo Y中要做的第一件事就是从github repo G获取master分支的新状态,你可以通过git pull来实现。

git checkout master
git pull

确保此时Y中的主控器未被更改,否则它将在主控器的Y状态顶部合并主控器的G状态。 git fetchgit pull的替代品,不会进行合并。

如果已更改,则备份您的状态而不切换分支执行git branch feature-y,并通过git reset --hard origin/master将主服务器恢复为原始状态。然后可以安全地进行git pull