私たちはプロジェクトを保存するために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
ブランチをプッシュしても問題ないようですが、フェッチまたはプルすると、他のブランチから情報がダウンロードされ、それから他のプロジェクトからいくつかの追加ファイルも取得されます。最善の解決策は何ですか?
あなたは孤児としてブランチを作成することができます:
git checkout --Orphan <branchname>
これで両親のいない新しいブランチが作成されます。その後、作業ディレクトリをクリアすることができます。
git rm --cached -r .
そしてドキュメントファイルを追加してコミットし、それらをgithubにプッシュします。
プルまたはフェッチは常にすべてのリモートブランチに関するローカル情報を更新します。単一のリモートブランチの情報のみを取得/取得したい場合は、それを指定する必要があります。
正しい答えは、孤立したブランチを作成することです。私は私のブログでこれを詳細に行う方法を説明します: 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
このように空の新しいブランチを作ります。
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 --Orphan
やgit rm
ingでやることがたくさんあるのなら、git mv
よりも便利かもしれません。
やってみる
git branch --set-upstream proj-doc Origin/proj-doc
そして、それがあなたのフェッチしすぎる問題に役立つかどうか確かめてください。もしあなたが本当に単一のブランチを取得したいだけなら、それを単にコマンドライン上で指定するのが最も安全です。
ファイル/ディレクトリを含むmaster
ブランチがあるとしましょう:
> git branch
master
> ls -la # (files and dirs which you may keep in master)
.git
directory1
directory2
file_1
..
file_n
git checkout —Orphan new_branch_name
ls -la |awk '{print $9}' |grep -v git |xargs -I _ rm -rf ./_
git rm -rf .
touch new_file
git add new_file
git commit -m 'added first file in the new branch'
git Push Origin new_branch_name
ステップ2では、新しいブランチ上のファイルとmaster
ブランチ内にあるファイルとの混同を避けるために、すべてのファイルをローカルで削除します。その後、手順3でこれらのファイルのリンクをすべて解除します。最後に、手順4以降は新しい空のブランチを使用して作業しています。
完了したら、ブランチを簡単に切り替えることができます。
git checkout master
git checkout new_branch
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>