我在分支上进行了10次提交,更改了15个文件。现在,我只想保留文件更改,而不提交。
方法现在我希望一次提交进行15个文件更改。
git reset --hard commit_id
git push --force
以上命令对我们没有帮助。
编辑:
我想将分支移动到一个特定的提交,同时保持当前提交中发生的所有文件更改。然后要在一次提交中添加所有未隐藏的更改。
有可能吗?
答案 0 :(得分:4)
当问题被标记为重复时(在蒂姆的回答之前),允许我提供作为评论发布的答案:
git reset --soft HEAD~10
git commit -m "there, my 10 commits squashed"
如果您已经将该分支放置在其他远程分支上(如果您已将已删除的修订版本推送到那里),则需要使用Tim强制执行的推送(很好)。
答案 1 :(得分:2)
也许这里最简单的方法是进行软重置,返回10次提交,然后重新提交:
git reset --soft HEAD~10
git commit -m 'squash 10 commits into just one commit'
git push --force origin your_branch
此软重置技巧背后的想法是,我们将HEAD指针移回10次提交。这会将您的10次提交中的所有更改放入阶段,同时使工作目录保持不变。然后,当您重新提交时,您可以有效地创建一个包含所有10个提交中的工作的提交。
请注意,通常需要强行推送,因为此选项会重写分支的历史记录。
另一种方法是使用交互式变基,并为要压缩的提交选择squash
。此选项还将重写历史记录。
答案 2 :(得分:1)
这是创建一个新分支“ your-branch-3”,然后从另一个分支“ your-branch-2”中检出每个文件:
git checkout master
git checkout -b your-branch-3
git diff your-branch-2 --name-only | xargs -I{} git checkout your-branch-2 -- {}
--name-only
xargs -I
{}
的出现。 git-checkout branch --