从现有分支的历史记录创建分支并在不合并的情况下推送到原始分支

Create branch from existing branch's history and push to original branch without merge

我有一个分支 dev 领先 30 次提交。我还不想推送这些提交,因为它们是尚未完成的功能的一部分。

我现在需要对代码库中的另一个文件进行一个不相关的小更改,并将该更改推送到 dev 分支。

我在这里想不出正确的流程。

在我的脑海里,我想象如下:

  1. 创建远程 dev 分支的分支 dev-feature-1(没有我的 30 次提交)。
  2. dev-feature-1 分支进行更改并提交。
  3. dev-feature-1 分支显式推送到 dev 分支。

以上3点的命令我都不知道是什么

首先,您可以使用任何其他名称在 git 中推送一个分支。所以,你应该使用下面的方法推送你的 dev 分支来保存你的工作。

git push origin dev:dev_Cristian

这将在原始存储库上创建一个新分支 dev_Cristian。或者,您可以在本地创建新分支并开始处理它。

此外,在我看来,您一直在开发 dev 分支,这在开发人员中很常见。这不是推荐的做法。理想情况下,您应该使用 git branch dev_feature --track origin/dev 创建一个新分支,并根据 origin/dev 不断将此分支 dev_feature 变基,以引入其他开发人员所做的更改。


回到你原来的问题,你可以创建一个新的分支并将它推到原点:

git branch dev-feature-1 --track origin/dev
... # make your changes
git add filenames && git commit -m "msg"
git push origin dev-feature-1

我不认为在共享分支上开发大功能(超过 2 次提交)是个好主意。我建议分叉你自己的本地分支进行开发,并在完成后将其合并到你的共享分支(dev 在你的情况下)。

对于你的情况,我建议:

git co -b 'dev_my_big_feature'
git co dev
git reset --hard origin/dev

dev 上完成你的小补丁,在 dev_my_big_feature 上完成你的大功能项目,只有在准备就绪时才会合并到 dev 中。