我正在研究一个项目,我的git知识是基本的。尝试将分支合并到主分支,但具有不同的功能,我想用我的基本逻辑解决这个问题(我正在寻求轻松),即使它不是处理问题的最佳方式。 / p>
我复制了具有不同名称的相同项目文件夹,试图创建具有功能名称的分支。所有功能都可以在不同的文件上运行,有时也可以在同一个文件上运行,但是我希望将不同的消息提交到不同的分支,然后将它们与主分支逐个合并。
第一个挑战,就是为什么我去不同的文件夹,我得到相同的分支名称。我可以根据功能重命名分支。
这是一个有效的工作流程吗?
答案 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 fetch
是git pull
的替代品,不会进行合并。
如果已更改,则备份您的状态而不切换分支执行git branch feature-y
,并通过git reset --hard origin/master
将主服务器恢复为原始状态。然后可以安全地进行git pull
。