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