私は2つの無関係なブランチ、マスターと構成を持つgitリポジトリを持っています。構成を作成し、すべてのファイルをパージしてから、構成ファイルのみに配置しました。これをリモートリポジトリにプッシュしたいのですが、新しい空のブランチ(すべての変更のログと元のブランチの古いリビジョンがないため)でした。
すべての履歴を消去してプッシュするにはどうすればよいですか?
私は2つの無関係なブランチ、マスターと構成を持つgitリポジトリを持っています。構成を作成し、すべてのファイルをパージしてから、構成ファイルのみに配置しました。これをリモートリポジトリにプッシュしたいのですが、新しい空のブランチ(すべての変更のログと元のブランチの古いリビジョンがないため)でした。
すべての履歴を消去してプッシュするにはどうすればよいですか?
回答:
すべてのファイルを削除しても、履歴は削除されません。最初に履歴のないブランチを作成し、設定ファイルを追加する必要があります。最近でgit checkout
は、--orphan
履歴のないブランチを作成するオプションがあります。--orphan
オプションに関する情報は次のとおりです。
--orphan <new_branch>
<new_branch>という名前の新しい孤立したブランチを作成し、<start_point>から開始して、それに切り替えます。この新しいブランチで行われた最初のコミットには親がなく、他のすべてのブランチおよびコミットから完全に切り離された新しい履歴のルートになります。
以前に「git checkout <start_point>」を実行した場合と同様に、インデックスと作業ツリーが調整されます。これにより、「git commit -a」を簡単に実行してルートコミットを作成することにより、<start_point>と同様のパスのセットを記録する新しい履歴を開始できます。
これは、完全な履歴を公開せずにコミットからツリーを公開する場合に役立ちます。これを行うと、現在のツリーは「クリーン」であるプロジェクトのオープンソースブランチを公開できますが、その完全な履歴には、プロプライエタリコードまたはその他のコードの邪魔なビットが含まれています。
<start_point>のパスとはまったく異なるパスのセットを記録する切断された履歴を開始する場合は、 "git rm -rfを実行して、孤立したブランチを作成した直後にインデックスと作業ツリーをクリアする必要があります。 」作業ツリーの最上位から。その後、新しいファイルを準備したり、作業ツリーに再配置したり、他の場所からコピーしたり、tarballを抽出したりする準備が整います。
こちらがcheckoutのドキュメントへのリンクです。走ることもできgit help checkout
ます。
履歴なしでブランチを作成すると、ブランチをサーバーにプッシュしたときに、その履歴もなくなります。FWIW、git push
「リモートブランチをローカルブランチと同じように見せる」と考えるのに役立ちます。ですから、歴史があってプッシュすれば、歴史があります。そうしないと、プッシュされたブランチは機能しません。
個人情報を共有したり履歴を削除したりせずにフリーランサーにコードを送信するには、これを行う必要がありました。
誰かがSourceTreeを使用している場合は、これが私がなんとかやってやった方法です。ソース管理の管理に慣れていないため、何か間違ったことをしたり、何かを忘れたりした場合は、お知らせください。
bitbucketを確認したところ、これが機能してコミット履歴を破棄したようです。
これが誰かを助けることを願っています。