[解決済み] 履歴のない新しいブランチをプッシュする方法
質問
私は、master と configs という 2 つの無関係なブランチを持つ git repo を持っています。 私は configs を作成し、すべてのファイルをパージし、そして設定ファイルのみに配置しました。 今、私はこれをリモート リポジトリにプッシュしたいのですが、新しい、空のブランチ (私のすべての変更のログと元のブランチの古いリビジョンなし) のようなものです。
どのように私はすべての履歴をパージし、それをプッシュすることができますか?
どのように解決するのですか?
すべてのファイルを削除しても、履歴は消えません。 まず、履歴のないブランチを作成し、設定ファイルを追加する必要があります。 最近では
git checkout
には
--orphan
オプションがあり、これは履歴のないブランチを作成します。 以下は
--orphan
オプションの説明です。
--orphan <new_branch>
新しいオーファンブランチを作成し、<new_branch>という名前で、<start_point>から開始し、それに切り替えます。この新しいブランチで行われた最初のコミットは親を持たず、他のすべてのブランチやコミットから完全に切り離された新しい履歴のルートとなります。
インデックスと作業ツリーは、あたかも以前 "git checkout <start_point>" を実行したかのように調整されます。これにより、"git commit -a" を実行してルートコミットを行うことで、<start_point> に似たパスのセットを記録した新しい履歴を簡単に開始することができます。
これは、あるコミットのツリーを、その全履歴を公開することなく公開したい場合に便利です。これは、現在のツリーは "clean"だが、全履歴にプロプライエタリなコードやその他の障害物が含まれるプロジェクトのオープンソースブランチを公開するために行うことができます。
もし、<start_point> のものとは全く異なるパスのセットを記録する切断された履歴を開始したいのであれば、作業ツリーのトップレベルから "git rm -rf ." を実行して、孤児ブランチを作った直後にインデックスと作業ツリーをクリアすべきです。その後、新しいファイルを準備し、他の場所からコピーしたり、tarball を抽出したりして、作業ツリーを再作成する準備が整うでしょう。
のドキュメントへのリンクはこちらです。
チェックアウト
. また
git help checkout
も実行できます。
履歴のないブランチを作成したら、それをサーバーにプッシュするときに、その履歴もなくなります。 参考までに、私が考えるのに役立つのは
git push
を「リモートブランチをローカルブランチと同じように見せる」と考えるとよいでしょう。 つまり、履歴があり、プッシュすれば、履歴が残るということです。 そうでない場合は、プッシュされたブランチはそうではありません。
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] リモートのGitブランチをチェックアウトするには?
-
[解決済み] 新しいローカルブランチをリモートの Git リポジトリにプッシュし、それを追跡するにはどうすればよいのでしょうか?
-
[解決済み] git rebase の取り消し
-
[解決済み] リモートにないトラッキングブランチを削除
-
[解決済み] Gitのプッシュを正しく強制する方法は?
-
[解決済み] Git で最新のコミットを新しいブランチに移動する
-
[解決済み】ローカルのGitブランチの名前を変更するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
gitlab をアップロード ! [リモート拒否] dev -> dev (受信前のフックが拒否されました)
-
Git Bashが致命的に表示される:この操作は作業ツリーで実行する必要がある
-
Git error: cannot spawn ssh.の回避策。そのようなファイルやディレクトリはありません
-
[解決済み] すべてのgitコミットを1つにまとめるには?
-
[解決済み] gitで、リポジトリに無関係のブランチを導入する簡単な方法はありますか?
-
[解決済み] バージョン管理には、なぜタグとリリース/ベータブランチを使い分ける必要があるのでしょうか?
-
[解決済み] gitで、stashを適用せずに、追跡されていないstashedファイルを表示する方法はありますか?
-
[解決済み] Git Repo から既存のファイルを削除する
-
[解決済み] git add を実行してもしなくても、ブランチを切り替えたときに自分の変更点(修正、追加、削除されたファイル)が表示され続けるのはなぜですか?
-
[解決済み] git fetch origin` と `git remote update origin` の違いは何ですか?