1. ホーム
  2. git

[解決済み] Gitで親がいないコミットを作成するにはどうしたらいいですか?重複

2023-03-05 17:43:57

質問

私は、バージョン管理ソフトウェアなしで作業していた小さなプロジェクトがあり、それぞれが他のものとわずかに異なる何かを行う、同じスクリプトの3つの異なるバージョンを持つことになりました。私はそのうちの1つのバージョンでgitレポを初期化し、他の2つをそれぞれ親なしでコミットしたいと思います。そうすれば、スクリプトの 3 つのバージョンのそれぞれが異なるブランチの先端であるかのように、相違点をマージすることができます。

これが必ずしもこの問題を解決するための正気か合理的な方法であるかどうかさえわかりません...。このように物事を行う方法についてのアドバイス、またはこの状況を処理するためのより良い方法についてのアドバイスがあれば、非常に感謝します。

どのように解決するのですか?

私のコメントより。

ブランチを2つ作って、そこに他の2つのバージョンを追加して、ブランチで作業してはいかがでしょうか?

ctcherryさんの回答とも一致すると思うのですが。


しかし、もし本当に master とは関係のない、まったく別の "ブランチ" を作りたいのであれば、それを行うには git checkout --orphan . これは のマニュアル git checkout オプションの動作について説明しています。 --orphan :

<ブロッククオート

新規に作成する オーファン ブランチを作成し、<new_branch> という名前で <start_point> から開始し、それに切り替えます。この新しいブランチで行われた最初のコミットは親を持たず、他のすべてのブランチやコミットから完全に切り離された新しい履歴のルートとなります。

このように使うことができます。

git checkout --orphan version2
git rm -rf .
<add version2 script>
git add your files
git commit -m 'Initial commit for version 2'

Git が 1.7.2 よりも古い場合 (この時点で git checkout --orphan が導入された) 1.7.2 より古い場合は、次のような代替コマンドを使うことができます。 "新しい空のブランチの作成" の中で Git コミュニティ・ブック :

時折、通常のコードと祖先を共有しないブランチをリポジトリに残しておきたいと思うことがあります。この例としては、生成されたドキュメントや、それに類するものがあります。現在のコードベースを親としない新しいブランチヘッドを作りたい場合は、次のように空のブランチを作成します。

git symbolic-ref HEAD refs/heads/newbranch 
rm .git/index 
git clean -fdx 
<do work> 
git add your files 
git commit -m 'Initial commit'