TortoiseGit で最後のコミットだけを sourceforge リポジトリにプッシュしたい。以前のものはすべてプッシュされません。ここで、新しいブランチを作成してこれをプッシュできると言われました。ただし、新しいブランチには、最後のコミットだけでなく、以前のすべてのコミットがあります。
私は何を間違っていますか?
ありがとう!
TortoiseGit で最後のコミットだけを sourceforge リポジトリにプッシュしたい。以前のものはすべてプッシュされません。ここで、新しいブランチを作成してこれをプッシュできると言われました。ただし、新しいブランチには、最後のコミットだけでなく、以前のすべてのコミットがあります。
私は何を間違っていますか?
ありがとう!
これは主に git の仕組みに対する誤解だと思います。コミットをプッシュするときに、そのコミットに親がある場合、git はその親がリモート リポジトリにもあることを確認します。スパース クローン (帯域幅やディスクの使用量を維持するのに役立つ場合がありますが、リモート リポジトリとの対話方法にいくつかの制限を課します) は別として、git はオブジェクト データベースの完全性と一貫性を維持するように設計されています。親もリポジトリに存在せずにコミットをプッシュできると、完全性/一貫性が損なわれます。したがって、設計上、コミットの系統が保持されていることを確認するために git なしで単一のコミットをプッシュすることはできません。
rebase
つまり、単一のコミットのみをプッシュするように調整できる具体的な方法が 2 つあります。単一のコミット、および必要に応じてそのブランチを再配置する可能性がありますが、それはワークフローにとって最良の選択ではない可能性があります)、または 2) プッシュするコミットに親がないことを確認します-たとえばgit checkout -b somebranch --orphan
、最近のバージョンの git では、次に作成しますあなたのコミット。