Github 如何挤压单个分支上的提交

Github 如何挤压单个分支上的提交,github,Github,我有一个分支叫做develop。我有大约20个承诺。我想将所有这些内容压缩到一次提交中,并将其重命名为“初始提交”。 因此,在最后,分支将有一个名为“initialcommit”的提交 我试过: git rebase-i头~20 我可以选择或“f”的承诺。我明白,但保存更改后我该怎么办 关于挤压的所有信息,我最初有另一个分支(主分支)。我只有一个开发分支,将来也只会有一个。让我们把它作为问题的完整问题域: 我有一个分支叫做develop。我有大约20个承诺。我想将所有这些内容压缩到一次提交中,并

我有一个分支叫做develop。我有大约20个承诺。我想将所有这些内容压缩到一次提交中,并将其重命名为“初始提交”。 因此,在最后,分支将有一个名为“initialcommit”的提交

我试过:

git rebase-i头~20

我可以选择或“f”的承诺。我明白,但保存更改后我该怎么办


关于挤压的所有信息,我最初有另一个分支(主分支)。我只有一个开发分支,将来也只会有一个。

让我们把它作为问题的完整问题域:

我有一个分支叫做develop。我有大约20个承诺。我想将所有这些内容压缩到一次提交中,并将其重命名为“初始提交”。因此,在最后,分支将有一个名为“initialcommit”的提交

您希望最近的n次提交是一次提交。我认为这是第一种遗憾。第一种后悔是通过软重置和提交来治愈的。这是一个演示。首先,我将在开发分支上进行一系列提交:

git init
echo "one" > file
git add .
git commit -m "one"

git branch develop
git checkout develop

echo "two" >> file
git add .
git commit -m "two"
echo "three" >> file
git add .
git commit -m "three"
echo "four" >> file
git add .
git commit -m "four"
echo "five" >> file
git add .
git commit -m "five"

git log --oneline
# 2febafe (HEAD -> develop) five
# 363ca9f four
# 429b266 three
# d46e6df two
# b8bf284 (master) one
cat file
# one
# two
# three
# four
# five
正如你所看到的,我有两个,三个,四个和五个。我希望这只是一个承诺。我们开始:

git reset --soft b8bf284
git add .
git commit -m "unified"
好,我们来看看周围:

git log --oneline
# 408bdd1 (HEAD -> develop) unified
# b8bf284 (master) one
cat file
# one
# two
# three
# four
# five

是的,在develope与master发生分歧之后,现在develope上只有一个commit,我所做的一切(文件的所有五行)都在其中。

重新开始。最近的20次提交,您希望它们是一次提交<代码>git重置--软头~20。现在提交。完成。运行我得到的命令:致命:不明确的参数“HEAD~20”:未知修订或路径不在工作树中。我确实运行了您的说明。我把20岁改成19岁,结果成功了。然后我加了所有的。提交并推送。它要我合并?我确实。。。我还有那份工作。没有变化当你说“推动”时,你就进入了一个全新的问题,偏离并超越了你所问的任何问题和我的指示。我的指示与你实际要求的相符。我添加了一个答案,说明了这一点。