web-dev-qa-db-ja.com

新しいプロジェクト用に新しい空のブランチを作成する方法

私たちはプロジェクトを保存するためにgitリポジトリを使っています。元のブランチから分岐しています。しかし今、私たちはいくつかのドキュメントを追跡するために小さな新しいプロジェクトを作成したいと思います。そのためには、ファイルの格納を開始するために新しい空のブランチを作成したいと思います。また、ネットワークの他のユーザにそのブランチのクローンを作成してもらいたいと思います。

どうすればそれができますか?

いくつか試してみましたが、うまくいきませんでした。

$ mkdir proj_doc; cd proj_doc
$ git init
$ git add .
$ git commit -m 'first commit'
$ git br proj_doc
$ git co proj_doc
$ git br -d master
$ git Push Origin proj_doc

ブランチをプッシュしても問題ないようですが、フェッチまたはプルすると、他のブランチから情報がダウンロードされ、それから他のプロジェクトからいくつかの追加ファイルも取得されます。最善の解決策は何ですか?

290
fazineroso

あなたは孤児としてブランチを作成することができます:

git checkout --Orphan <branchname>

これで両親のいない新しいブランチが作成されます。その後、作業ディレクトリをクリアすることができます。

git rm --cached -r .

そしてドキュメントファイルを追加してコミットし、それらをgithubにプッシュします。

プルまたはフェッチは常にすべてのリモートブランチに関するローカル情報を更新します。単一のリモートブランチの情報のみを取得/取得したい場合は、それを指定する必要があります。

567
Hiery Nomus

正しい答えは、孤立したブランチを作成することです。私は私のブログでこれを詳細に行う方法を説明します: http://sidja.in/post/62663941071

...

始める前に、GITの最新バージョンにアップグレードしてください。最新バージョンを実行していることを確認するには、次のコマンドを実行してください。

which git

それが古いバージョンを吐き出す場合、あなたはあなたがインストールしたバージョンを含むフォルダであなたのPATHを増やす必要があるかもしれません。

さて、これで準備は完了です。 gitチェックアウトを含むフォルダにcdをした後、Orphanブランチを作成してください。この例では、ブランチに「mybranch」という名前を付けます。

git checkout --Orphan mybranch

孤児院のすべてを削除

git rm -rf .

いくつかの変更を加える

vi README.txt

変更を追加して確定します

git add README.txt
git commit -m "Adding readme file"

それでおしまい。走れば

git log

コミット履歴が最初から始まることに気付くでしょう。マスターブランチに戻るには、単に実行してください。

git checkout master

次のコマンドを実行すると、孤児院に戻ることができます。

git checkout mybranch
60
Sid Jain

このように空の新しいブランチを作ります。

true | git mktree | xargs git commit-tree | xargs git branch proj-doc

あなたのproj-docファイルが単一のサブディレクトリの下ですでにコミットされている場合は、このようにして新しいブランチを作ることができます。

git commit-tree thatcommit:path/to/dir | xargs git branch proj-doc

これがgit branch --Orphangit rmingでやることがたくさんあるのなら、git mvよりも便利かもしれません。

やってみる

git branch --set-upstream proj-doc Origin/proj-doc

そして、それがあなたのフェッチしすぎる問題に役立つかどうか確かめてください。もしあなたが本当に単一のブランチを取得したいだけなら、それを単にコマンドライン上で指定するのが最も安全です。

10
jthill

ファイル/ディレクトリを含むmasterブランチがあるとしましょう:

> git branch  
master
> ls -la # (files and dirs which you may keep in master)
.git
directory1
directory2
file_1
..
file_n

空の枝を作る方法を段階的に示します。

  1. git checkout —Orphan new_branch_name
  2. 次のコマンドを実行する前に、正しいディレクトリにいることを確認してください。
    ls -la |awk '{print $9}' |grep -v git |xargs -I _ rm -rf ./_
  3. git rm -rf .
  4. touch new_file
  5. git add new_file
  6. git commit -m 'added first file in the new branch'
  7. git Push Origin new_branch_name

ステップ2では、新しいブランチ上のファイルとmasterブランチ内にあるファイルとの混同を避けるために、すべてのファイルをローカルで削除します。その後、手順3でこれらのファイルのリンクをすべて解除します。最後に、手順4以降は新しい空のブランチを使用して作業しています。

完了したら、ブランチを簡単に切り替えることができます。

git checkout master 
git checkout new_branch
6
user1723157

gitバージョンに--Orphanオプションがない場合は、この方法を使用してください。

git symbolic-ref HEAD refs/heads/<newbranch> 
rm .git/index 
git clean -fdx 

いくつかの仕事をした後

git add -A
git commit -m <message>
git Push Origin <newbranch>
5
cyb0k