2012-09-22 14 views
49

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

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

+3

これは非常に似ています: http://stackoverflow.com/questions/1384325/in-git-is-there-a-simple-way-of-introducing-an-unrelated-branch-to -a-repository – Mark

+0

@マークのおかげで、私は必要なことをします。 – AoeAoe

答えて

100

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

13

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

皆さんがSourceTreeを使用している場合、これは私がそれをやった方法です。私が何か間違っているか、忘れているかどうか私に教えてください。私はソース管理管理についてよく知らないのです。

  1. ソースツリーの端末ボタンに行きました。
  2. 私はコマンドを使用して、新しい「孤児」の分岐を作成しました:きれいな-VERは私の支店名
  3. である私は、端末を閉じて、私のコミットログがクリアされたことがわかりました 「クリーン-VER --orphan Gitのチェックアウト」を私は新しい孤児の枝にいたので。私はすべてのソースコードを公開し、変更をコミットしました。
  4. bitbucketリポジトリをリポジトリ>リモートまたはリポジトリの追加>リポジトリ設定>追加のいずれかにセットアップしました。
  5. 私はそれを閉じ、プッシュボタンをクリックしました
  6. 私は新しい 'clean-ver'ブランチを選択しました。

私がbitbucketをチェックしたとき、これはうまくいっていて、私のコミット履歴を破棄したようです。

これは誰かを助けることを望みます。

11

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

git checkout --orphan <name_you_choose_for_orphan_branch> 
git commit 

次に、あなたの

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


参照を実行することができます this one-liner

関連する問題