git - 创建同一个重复文件夹的不同分支
问题描述
我正在做一个项目,我的 git 知识很基础。尝试将分支合并到主分支,但具有不同的功能,我想用我的基本逻辑(我正在寻求轻松)来解决这个问题,即使这不是解决问题的最佳方法。
我复制了具有不同名称的同一个项目文件夹,试图创建具有功能名称的分支。功能都作用于不同的文件,有时作用于同一个文件,但我想将不同的消息提交到不同的分支,然后将它们与主分支一一合并。
第一个挑战是为什么我去不同的文件夹,我得到相同的分支名称。我可以根据功能重命名分支吗?
这是一个有效的工作流程吗?
解决方案
在 git 中,创建文件夹的副本以处理不同的功能并不常见,因为分支是如此轻量级,并且很容易在单个文件夹内切换分支。
然而,如果项目很大,设置复杂,或者每个功能都需要大量外部配置来测试,那么在单独的文件夹中工作可能会更容易。
对于 git,每个文件夹都是一个单独的存储库,因此假设您有功能 X、Y 和 github 存储库 G 的文件夹,那么这意味着您实际上有 3 个独立的存储库:X、Y 和 G。
做你想做的事情的一种方法是首先根据需要准备功能 repo X,然后使用 git pull/push 将其与 G 同步。然后,您准备功能存储库 Y 并将其与 G 同步。
最后你仍然会有 3 个独立的 repos,但每个都有分支 feature-x、feature-y 和 master 有相同的提交。
因此,如果您在文件夹 X 中从当前状态创建一个分支“feature-x”并切换到您将使用的分支:
git checkout -b feature-x
我想你已经做出了承诺并且git log
看起来很好。
然后你通过做与“G”同步git push
。这会将分支feature-x
和您的新提交添加到 G。
此时,您实际上可以去 github 并创建一个可以通过 Web 界面合并到 master 的拉取请求。
如果您不想通过拉取请求 Web UI 执行此操作,那么您只需首先在本地文件夹 X 中准备您的主分支到您想要的状态,其中最简单的是:
git checkout master
git merge feature-x
然后你使用 . 同步 X 和 G 的主分支git push
。
最后对 Y 和其他特征重复相同的过程。
注意:在特性 repo Y 中要做的第一件事是从 github repo G 获取 master 分支的新状态,你可以通过git pull
.
git checkout master
git pull
确保此时您的 Y 中的 master 没有更改,否则它将在 master 的 Y 状态之上合并 master 的 G 状态。是不进行合并git fetch
的替代方案。git pull
如果它被改变了,在不切换分支的情况下备份你的状态git branch feature-y
,然后将 master 恢复到原始状态git reset --hard origin/master
。那么就安全了git pull
。
推荐阅读
- java - Java字节变量如何用8位存储
- scala - 类型推断如何用于具有占位符语法的选择?
- javascript - 我如何在javascript ES6中通过索引匹配两个不同数组的项目
- java - 多线程大量短进程的最佳方法
- android - Android蓝牙套接字关闭:读取返回:-1
- javascript - Ajax 不提交给 PHP
- bash - 我在我的 bash 脚本中使用 break 还是 continue ?
- python - 为什么我在最后一步的 ELIF 命令中出现语法错误。?
- vue.js - Vuetify v-carousel 与 vuex 异步计算图像无法正常工作
- scala - 在理解 Akka 方面需要帮助