リモートリポジトリからクローンを作成すると、実際には、Gitは自動的にローカルmaster
ブランチおよびリモートmaster
協会の支店、およびリモート倉庫のデフォルトの名前ですorigin
。
リモートリポジトリの情報を表示するには、使用しますgit remote
:
$ git remote
origin
また、とのgit remote -v
表示より詳しい情報:
$ git remote -v
origin git@github.com:michaelliao/learngit.git (fetch)
origin git@github.com:michaelliao/learngit.git (push)
上に示しつかむとプッシュすることができますorigin
アドレスを。あなたがアクセスをプッシュしていない場合は、プッシュアドレスを参照することはできません。
プッシュブランチ
ブランチをプッシュ、つまり、提出のすべてのローカルブランチは、リモートリポジトリにプッシュ。、Gitは枝に分岐するように、ローカルブランチを指定するには、押された場合に対応するリモート上のリモート・データベースにプッシュ:
$ git push origin master
あなたが他のブランチをプッシュしたい場合は、例えばdev
、読むには:
$ git push origin dev
ただし、リモートプッシュにローカルブランチを取る必要がありません、そして何がそれを必要としない枝を、プッシュする必要がありますか?
-
master
支店はとても遠隔時刻と同期されるように、メインブランチです。 -
dev
支店は開発ブランチである、それはリモートで同期させる必要があるので、すべてのチームメンバーは、その上で動作する必要があります。 -
上司が最後に毎週いくつかのバグ修正をあなたを見たいと思っていない限り、バグのための分岐バグ修正はローカルでのみ、リモートにプッシュする必要はありません。
-
機能ブランチは、あなたとあなたの小さなパートナーがそれを開発するかどうかに応じて、リモートにプッシュすることが期待されます。
要するに、ローカルに隠されたプレイを所有することができます分岐、Gitのである、プッシュかどうか、あなたの気分に応じて可能性があります!
クロールブランチ
多くの人々が一緒に作業するとき、私達は行くだろうmaster
とdev
ブランチは、自分の変更をプッシュ。
さて、あなたはそれが別のコンピュータクローン別のコンピュータ(SSHキーノートでは、GitHubのに追加する必要がある)、または同じディレクトリことができ、小さなパートナーをシミュレートします:
$ git clone git@github.com:michaelliao/learngit.git
Cloning into 'learngit'... remote: Counting objects: 40, done. remote: Compressing objects: 100% (21/21), done. remote: Total 40 (delta 14), reused 40 (delta 14), pack-reused 0 Receiving objects: 100% (40/40), done. Resolving deltas: 100% (14/14), done.
リモートパートナーからするとあなたの小さなクローンライブラリーは、デフォルトで、あなただけの地元の小さなパートナー見ることができるmaster
ブランチを。あなたが使用することができます信じてはいけないgit branch
参照するコマンドを:
$ git branch
* master
さて、中にあなたの小さなパートナーにdev
枝の開発、リモート作成する必要があるorigin
のdev
ローカルに枝を、ので、彼は地元作成するには、このコマンドを使用するdev
ブランチを:
$ git checkout -b dev origin/dev
今、彼がすることができますdev
し、随時、その後、修正、およびし続けるdev
分岐push
遠隔に:
$ git add env.txt $ git commit -m "add env" [dev 7a5e5dd] add env 1 file changed, 1 insertion(+) create mode 100644 env.txt $ git push origin dev Counting objects: 3, done. Delta compression using up to 4 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 308 bytes | 308.00 KiB/s, done. Total 3 (delta 0), reused 0 (delta 0) To github.com:michaelliao/learngit.git f52c633..7a5e5dd dev -> dev
あなたのパートナーがために少しを持っているorigin/dev
彼の提出ブランチをプッシュし、あなたが変更されている同じファイルにすることが起こる、と押してみました:
$ cat env.txt
env
$ git add env.txt
$ git commit -m "add new env"
[dev 7bd91f1] add new env 1 file changed, 1 insertion(+) create mode 100644 env.txt $ git push origin dev To github.com:michaelliao/learngit.git ! [rejected] dev -> dev (non-fast-forward) error: failed to push some refs to '[email protected]:michaelliao/learngit.git' hint: Updates were rejected because the tip of your current branch is behind hint: its remote counterpart. Integrate the remote changes (e.g. hint: 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details.
最新のあなたの小さなパートナーを提出したので、プッシュが失敗し、紛争のプッシュを提出しようとすると、解決策は単純で、Gitは使用するように私たちを求めているgit pull
から最新の提出をorigin/dev
地元の合併では、その後、ダウンキャッチ、および、紛争解決、それらを押し上げます。
$ git pull
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.
git pull <remote> <branch> If you wish to set tracking information for this branch you can do so with: git branch --set-upstream-to=origin/<branch> dev
git pull
また失敗し、ローカルので、dev
ブランチおよびリモートorigin/dev
リンク分岐、プロンプトが表示され、設定dev
およびorigin/dev
リンク:
$ git branch --set-upstream-to=origin/dev dev
Branch 'dev' set up to track remote branch 'dev' from 'origin'.
そして、プル:
$ git pull
Auto-merging env.txt
CONFLICT (add/add): Merge conflict in env.txt Automatic merge failed; fix conflicts and then commit the result.
今回git pull
の成功が、紛争に関連したが、手動方法および支店管理を解決、解決する必要がある競合を解決するために、まったく同じ。提出することを解決した後、次にpush:
$ git commit -m "fix env conflict"
[dev 57c53ab] fix env conflict
$ git push origin dev
Counting objects: 6, done. Delta compression using up to 4 threads. Compressing objects: 100% (4/4), done. Writing objects: 100% (6/6), 621 bytes | 621.00 KiB/s, done. Total 6 (delta 0), reused 0 (delta 0) To github.com:michaelliao/learngit.git 7a5e5dd..57c53ab dev -> dev
そのため、操作の共同のマルチプレイヤーモードでは、通常はこのようなものです:
-
まず、あなたが使用しようとすることができ
git push origin <branch-name>
、その変更をプッシュします。 -
プッシュが失敗した場合、リモートであなたのローカルブランチより新しいので、私たちは、使用する必要が
git pull
合併しようとしました。 -
合併は、紛争、紛争の解決、およびローカルにコミットがある場合は、
-
そこを取り除くいかなる紛争や紛争後はありませんし、次に
git push origin <branch-name>
成功します押し!
場合はgit pull
プロンプトが表示されno tracking information
、その後、地元の支店やリモートブランチの関係は、リンクを作成していない、コマンドを使用しますgit branch --set-upstream-to <branch-name> origin/<branch-name>
。
これは非常に単純な、一度お馴染みの共同作業のマルチプレイヤーモード、です。
概要
-
リモートデータベースの情報を表示し、使用します
git remote -v
。 -
リモートをプッシュしていない場合は、新しいローカルブランチは、それは他の人には見えません。
-
ローカルブランチ、使用からプッシュ
git push origin branch-name
プッシュで最初に、失敗した場合、git pull
新たに提出さグラブリモート。 -
使用して、ローカルおよびリモートのブランチに対応するブランチを作成する
git checkout -b branch-name origin/branch-name
最高のローカルおよびリモートブランチ契約の名前を。 -
准ローカルブランチと使用してリモートブランチ
git branch --set-upstream branch-name origin/branch-name
。 -
使用し、リモートブランチからグラブ
git pull
競合がある場合、我々は最初の紛争に対処しなければなりません。