Git 从同一根树枝上摘樱桃

Git 从同一根树枝上摘樱桃,git,Git,我在大学里已经使用git好几年了,如果说实话,我仍然不知道我在做什么 我不确定我的标题是否恰当地描述了我所面临的问题,但基本上,我在开发特定功能的同时向主分支做出了一系列承诺。现在我已经完成了这个特性的开发,我的后见之明告诉我这是一个糟糕的想法,因为我现在只需要提交和部署最后几次提交 由于这些早期提交仍在审查和等待批准,我不能将所有内容都拖到我的开发服务器上。我在试图弄清楚这一点时偶然发现了git cherry pick,但显然这是用于从不同分支提取特定提交的。。。我想 我的问题是,既然我处于这

我在大学里已经使用git好几年了,如果说实话,我仍然不知道我在做什么

我不确定我的标题是否恰当地描述了我所面临的问题,但基本上,我在开发特定功能的同时向主分支做出了一系列承诺。现在我已经完成了这个特性的开发,我的后见之明告诉我这是一个糟糕的想法,因为我现在只需要提交和部署最后几次提交

由于这些早期提交仍在审查和等待批准,我不能将所有内容都拖到我的开发服务器上。我在试图弄清楚这一点时偶然发现了git cherry pick,但显然这是用于从不同分支提取特定提交的。。。我想


我的问题是,既然我处于这个绑定中,是否有一种方法可以只从主分支向下拉最后2或3个提交,而不获取我不想包含的所有更改?我已经阅读了其他一些关于SO的帖子,但是我不确定我是否理解关于cherry picking的答案,是否能够尝试这些方法,或者在这种情况下是否合适。

听起来你有一个分支,其中有你不想要的提交,后来又有你想要的提交,但你不想丢弃该分支:

master branch
A - B - C - D - E - F - G -H - I - J - K
             \                /     \ /
              Unwanted commits     Good commits
你需要一个新的分支机构

git checkout -b new-branch
你需要在你不想要的工作之前重置它

git reset --hard <hash-of-commit-C> 

听起来您有一个分支,其中包含您不想要的提交,后来又包含您想要的提交,但您不想丢弃该分支:

master branch
A - B - C - D - E - F - G -H - I - J - K
             \                /     \ /
              Unwanted commits     Good commits
你需要一个新的分支机构

git checkout -b new-branch
你需要在你不想要的工作之前重置它

git reset --hard <hash-of-commit-C> 

你可以这样做:

git checkout new-branch origin/master # or use whatever branch/revision you think it's ok to start from
git cherry-pick old-branch~2..old-branch # cherry pick the last two revisions of old-branch
如果你喜欢这个结果,你可以用这个替换你的分支

git branch -f old-branch # set old-branch where I am right now
git checkout old-branch

你已经完成了。

你可以这样做:

git checkout new-branch origin/master # or use whatever branch/revision you think it's ok to start from
git cherry-pick old-branch~2..old-branch # cherry pick the last two revisions of old-branch
如果你喜欢这个结果,你可以用这个替换你的分支

git branch -f old-branch # set old-branch where I am right now
git checkout old-branch

您已经完成了。

您可以只下拉最后一个X提交,但我认为结果不会是您期望的结果。难道你不能在先前提交的基础上创建一个新的分支,然后通过cherry pick从master获取提交吗?是的,你可以使用cherry pick从2次提交中获取更改。你不会了解整个历史
git cherry pick sha_of_commit
恢复提交怎么样?@Christoph从私有分支删除错误修订有什么意义?最好只是清理一个新分支上的历史记录,正如建议的那样,您可以只下拉最后的X提交,但我认为结果不会是您期望的结果。难道你不能在先前提交的基础上创建一个新的分支,然后通过cherry pick从master获取提交吗?是的,你可以使用cherry pick从2次提交中获取更改。你不会了解整个历史
git cherry pick sha_of_commit
恢复提交怎么样?@Christoph从私有分支删除错误修订有什么意义?按照建议,最好只是清理一个新分支的历史记录