我正在尝试从Github获取一个repo,在过去恢复一个标记,将其推送到另一个远程并删除所有历史记录。除了删除所有提交日志之外,我可以使用以下内容执我缺少什么?
git clone https://github.com/user/user-repo.git
cd user-repo
git reset --hard tags/v2.0
git remote add stash ssh://git@myserver:7999/myproject/user-repo.git
git push --force stash master
答案 0 :(得分:43)
我认为你想要的是一个像新的回购,所以删除.git/
目录并重新启动它会更简单。
git clone https://github.com/user/user-repo.git
cd user-repo
git reset --hard tags/v2.0
rm -rf .git/
git init
git add .
git commit -m 'first commit'
git remote add stash ssh://git@myserver:7999/myproject/user-repo.git
git push --force stash master
答案 1 :(得分:3)
您可以使用git merge --squash
将所有提交压缩为一个,然后将其推送。
答案 2 :(得分:1)
您基本上是在谈论将所有提交汇总到一个提交中,还是要保留所有提交但是截断实际的提交消息?
要将提交压缩为一个(并根据需要截断最终提交消息),您可以使用交互式rebase:
git rebase -i <whatever>
要截断实际的提交消息但保留所有提交,请使用--msg-filter
选项git filter-branch
。