web-dev-qa-db-ja.com

GitHubにリモートブランチを作成する

SVNには、ブランチを作成する少なくとも2つの方法があります。

svn cp /home/me/localcheckout/trunk /home/me/localcheckout/branches/newbranch
svn cp http://server/trunk http://server/branches/newbranch

最初にローカルで作成してから、ブランチ全体をコミットする必要があります。
2番目はサーバー上に作成します。

2番目の利点は、ローカルトランクをsvn切り替え、いくつかのファイルにいくつかの変更を加え、ほんの数KBをコミットできることです。

Gitを使用してそれを達成することは可能ですか?
GitHubにリモートブランチを作成し、ローカルリポジトリにプルする方法はありますか?

私が尋ねる理由は、電話のインターネット接続を使用してマスターから新しいリモートブランチに数KBをプッシュしようとしているが、プッシュするときに約400MBをプッシュしたいからです!

オブジェクトの書き込み:22%(54080/245586)、86.74 MiB | 13 KiB/s

同様の質問については、 Git-大規模プロジェクトのリモートブランチのプッシュが非常に遅い を参照してください。

57
opticyclic

Githubにはブランチを作成するためのシンプルなUIがあるようです。ブランチのドロップダウンを開くと、「ブランチを検索または作成する...」というプロンプトが表示されます。新しいブランチの名前を入力し、表示される「作成」ボタンをクリックします。

Githubから新しいブランチを取得するには、標準のgit fetchコマンドを使用します。

create branch github ui

ただし、サーバーにプッシュされる基になるデータ(コミットオブジェクト)は、どのブランチにプッシュされても同じであるため、これが基になる問題に役立つかどうかはわかりません。

102
Matt McHenry

あなたが何らかの形でツリーに大きな違いをもたらし、新しい変更を送信する必要がない限り、Gitはサーバーに既に存在するファイルを理解することになっています。

現在の状態のコピーで新しいブランチを作成するには

git checkout -b new_branch #< create a new local branch with a copy of your code
git Push Origin new_branch #< pushes to the server

リポジトリがサーバーに多くを送信するのに必要な理由を理解するために行った手順を説明してください。

46

新しいブランチを作成する前に、常にベストプラクティスはローカルマシンに最新のリポジトリを保持することです。エラーのないブランチを作成するには、次の手順に従います。

 1. $ git branch (check which branches exist and which one is currently active (prefixed with *). This helps you avoid creating duplicate/confusing branch name)
 2. $ git branch <new_branch> (creates new branch)
 3. $ git checkout new_branch
 4. $ git add . (After making changes in the current branch)
 5. $ git commit -m "type commit msg here"
 6. $ git checkout master (switch to master branch so that merging with new_branch can be done)
 7. $ git merge new_branch (starts merging)
 8. $ git Push Origin master (Push to the remote server)

私はこれを参照しました blog そして、私はそれがよりクリーンなアプローチであることがわかりました。

2
w1n5rx