将一个rebase推送到一个裸设备并在遥控器上运行git gc --aggressive --prune=now
之后,还需要什么来强制远程设备的提交历史记录来指示与该遥控设备的新结账相同的历史记录,即没有迹象表明这个变化?例如,需要在遥控器上完成删除历史记录并仅显示单个压缩提交:
$ mkdir test
$ cd test
$ git init
$ touch foo
$ git add foo
$ git commit -m 'Initial commit.'
$ git remote add origin ssh://user@git.domain.com:29418/~user/test.git
$ git push -u origin master
$ for i in {1..10}
> do
> echo $i >>foo
> git add -u
> git commit -m "Adding $i to foo."
> git push origin master
> done
$ git reset --soft 99a31c5906f82b333ca5c6204a3f83e3f100d4e7
$ cat foo
1
2
3
4
5
6
7
8
9
10
$ git commit --amend --no-edit
$ git push origin master --force
# On the git server inside the bare repo:
[root@server test.git]# git log --graph --all --oneline
* 8068d90 push
* 203f010 push
* 58b851d push
* 5e385c9 push
* 3c3a5b2 push
* 5b40efd push
* 558d8e1 push
* 61e170a push
* d1b60df push
* 36f44a8 push
* 3056f9c push
* e9e8fc6 push
* e40692c Created branch refs/meta/gitblit/reflog
* 327e77a Initial commit.