履歴なしで新しいブランチをプッシュする方法


93

私は2つの無関係なブランチ、マスターと構成を持つgitリポジトリを持っています。構成を作成し、すべてのファイルをパージしてから、構成ファイルのみに配置しました。これをリモートリポジトリにプッシュしたいのですが、新しい空のブランチ(すべての変更のログと元のブランチの古いリビジョンがないため)でした。

すべての履歴を消去してプッシュするにはどうすればよいですか?


3
これはよく似ています。stackoverflow.com
Mark

回答:


155

すべてのファイルを削除しても、履歴は削除されません。最初に履歴のないブランチを作成し、設定ファイルを追加する必要があります。最近で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「リモートブランチをローカルブランチと同じように見せる」と考えるのに役立ちます。ですから、歴史があってプッシュすれば、歴史があります。そうしないと、プッシュされたブランチは機能しません。


36

すべての履歴を消去してプッシュするにはどうすればよいですか?

git checkout --orphan <name_you_choose_for_orphan_branch>
git commit

その後、あなたはあなたを走らせることができます

git push <remote-name> <branch-name>


cf. このワンライナー


16

個人情報を共有したり履歴を削除したりせずにフリーランサーにコードを送信するには、これを行う必要がありました。

誰かがSourceTreeを使用している場合は、これが私がなんとかやってやった方法です。ソース管理の管理に慣れていないため、何か間違ったことをしたり、何かを忘れたりした場合は、お知らせください。

  1. ソースツリーのターミナルボタンに行きました。
  2. 次のコマンドを使用して、新しい「孤立した」ブランチを作成しました: 'git checkout --orphan clean-ver'ここで、clean-verは私のブランチ名です
  3. ターミナルを閉じたところ、新しい孤立したブランチにいたため、コミットログがクリアされたことがわかりました。すべてのソースコードをステージングし、変更をコミットしました。
  4. リポジトリ>リモートの追加またはリポジトリ>リポジトリ設定>追加のいずれかでbitbucketリポジトリを設定しました。
  5. それを閉じて、プッシュボタンをクリックした
  6. 新しい 'clean-ver'ブランチを選択しました。

bitbucketを確認したところ、これが機能してコミット履歴を破棄したようです。

これが誰かを助けることを願っています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.