使用 git-svn,如果我有多个提交不在 svn 中,如何仅将选定的提交推送到 svn?

发布于 2024-09-13 22:15:16 字数 239 浏览 5 评论 0原文

假设我的本地 git 存储库中有多个提交尚未推送到 svn。例如,master 上的这四个提交。

A <-- B <-- C <-- D

A 是不在 svn 中的最旧的提交,D 是最新的提交。

如何使用 git svn dcommit 只将 A 和 B 推送到 svn,而只将 C 和 D 保留在本地 git 存储库中?

欢迎使用替代工作流程。

Let's say I have multiple commits in my local git repository that have not been pushed to svn. For example, these four commits on master.

A <-- B <-- C <-- D

A is the oldest commit not in svn and D is the newest commit.

How do I use git svn dcommit to only push A and B to svn, but keep C and D only in my local git repository?

Alternate workflows welcome.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

晨曦慕雪 2024-09-20 22:15:16

dcommit 采用一个可选参数,指定在提交期间将什么视为 HEAD,因此这些工作中的任何一个都有效(其中 B 是对该特定提交的引用,如果它具有一个或通过哈希):

git svn dcommit B
git svn dcommit HEAD~2

dcommit takes an optional argument specifying what to treat as HEAD during commits, so either of these work (where B is a reference to that particular commit, either by name if it has one or by hash):

git svn dcommit B
git svn dcommit HEAD~2
蓦然回首 2024-09-20 22:15:16

我一直在思考这个问题,并对我自己的问题有一个潜在的解决方案。

我可以为我正在处理的每个离散任务创建一个本地分支。如果我完成了一项工作并正在等待代码审查,我可以创建一个新分支并开始处理一项独立任务。

当给定的任务完成后,我运行 git svn rebase 。然后,我在 master 之上重新调整本地分支,将 master 快进到该分支的头部,然后 dcommit。

我的问题是提交 A 和 B 是一项任务的一部分,而 C 和 D 是另一项独立任务。 C 和 D 属于不同的分支,永远不应该在 A 和 B 之上提交。

这个问题的答案...

git-svn dcommiting a single git commit

似乎表明只提交 A 和 B 是不可能的。

I've been thinking about this, and have a potential solution to my own problem.

I can create a local branch for each discrete task I'm working on. If I finish one piece of work and am waiting for a code review, I can create a new branch and start working on an independent task.

When a given task is complete, I run git svn rebase. I then rebase my local branch on top of master, fast forward master to the head of that branch, then dcommit.

My problem was that commits A and B were part of one task, and C and D were another independent task. C and D belong in a different branch, and never should have been committed on top of A and B.

The answers to this question...

git-svn dcommiting a single git commit

Seem to indicate that only committing A and B isn't really possible.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文