[解決済み] 新しい(そして空の!)「ルート」ブランチを作成する方法は?
質問
このgitリポジトリに新しい"root"ブランチを定義したいのですが、どうすればいいですか? ルートブランチとは、リポジトリ内の他のブランチから完全に独立したブランチを意味します。 1 .
残念ながら、コミット(仮称)でも
A
) のコミットツリーの一番下に、たくさんのファイルが含まれています (これは、すでにかなり成熟したプロジェクトで初期化されたリポジトリでした)。
つまり、たとえ
A
を新しいブランチの
<start-point>
でコミットされたすべてのファイルを含むことになります。
A
.
このリポジトリに、完全に空のブランチを作成する方法はありますか?
<start-point>
に近い
A
ということですか?
1 ちなみに、これは ではなく は、新しいレポを作成することと同じです。 レポを分けると、いろいろと不便になります。
EDIT : OK、これは私がやったことです。 vcsjones ' の回答です。
# save rev of the current earliest commit
OLDBASE=$(git rev-list --max-parents=0 HEAD)
# create a new orphan branch and switch to it
git checkout --orphan newbranch
# make sure it's empty
git rm -rf .
# create a new empty commit in the new branch, and
# save its rev in NEWBASE
git commit --allow-empty -m 'base commit (empty)'
NEWBASE=$(git rev-list HEAD)
# specify $NEWBASE as the new parent for $OLDBASE, and
# run filter-branch on the original branch
echo "$OLDBASE $NEWBASE" > .git/info/grafts
git checkout master
git filter-branch
# NOTE: this assumes that the original repo had only one
# branch; if not, a git-filter-branch -f <branch> command
# need to be run for each additional branch.
rm .git/info/grafts
この手順は少し複雑ですが、最終的には
空
として機能するベースコミット
<start-point>
新しい "clean-slate branch" のために必要なことは、次のとおりです。
git checkout -b cleanslate $(git rev-list --max-parents=0 HEAD)
今後、私は常にこのように新しいリポジトリを作成するつもりです。
git init
git commit --allow-empty -m 'base commit (empty)'
...そのため、最初のコミットは 空 そして、常に新しい独立したブランチを開始するために利用可能です。 (これは非常に稀にしか必要とされない機能であることは分かっていますが、簡単に利用できるようにすることは非常に簡単です)。
解決するには?
を使用します。
--orphan
ブランチを作成する際に
git checkout --orphan YourBranchName
これはゼロコミットで新しいブランチを作成しますが、すべてのファイルがステージされます。この時点で、それらを削除することができます。
("remove them": A
git reset --hard
はインデックスを空にし、空の作業ツリーを残します)
を見てみましょう。 マンページ をチェックアウトすると、--orphan の詳細が表示されます。
関連
-
[解決済み】GitHubで空のブランチを作成する
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] リモートのGitブランチをチェックアウトするには?
-
[解決済み] 新しいローカルブランチをリモートの Git リポジトリにプッシュし、それを追跡するにはどうすればよいのでしょうか?
-
[解決済み] git rebase の取り消し
-
[解決済み] Git のリモートブランチを作成する方法を教えてください。
-
[解決済み] Gitブランチをmasterにマージする最も良い(そして最も安全な)方法は何ですか?
-
[解決済み] 複数のコミットを1つのスクワッシュされたコミットとして別のブランチにマージするにはどうすればよいですか?
-
[解決済み] 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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] git pull リモートブランチがリモートの参照先を見つけることができない
-
[解決済み】以下の追跡されていないワーキングツリーファイルは、マージによって上書きされますが、私は気にしません。
-
[解決済み] リモートの <ブランチ名> とマージするように設定されていますが、そのような参照は取得されませんでしたか?
-
[解決済み] 新しいBitbucketでリポジトリを削除するにはどうすればよいですか?
-
[解決済み] Gitのプッシュエラーです。Unable to unlink old (Permission denied)です。
-
[解決済み] Gitでプロジェクトの最初のコミットを変更しますか?重複
-
[解決済み] 新しいプロジェクトのための新しい空のブランチを作成する
-
[解決済み] gitで、リポジトリに無関係のブランチを導入する簡単な方法はありますか?
-
[解決済み】Gitでルートコミットの前にコミットを挿入する?
-
[解決済み] git の半秘密の空のツリーオブジェクトは信頼できますか?なぜシンボル名がないのですか?