gitの研究ノート - 多くの人が一緒に働きます

リモートリポジトリからクローンを作成すると、実際には、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のである、プッシュかどうか、あなたの気分に応じて可能性があります!

 

クロールブランチ

多くの人々が一緒に作業するとき、私達は行くだろうmasterdevブランチは、自分の変更をプッシュ。

さて、あなたはそれが別のコンピュータクローン別のコンピュータ(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枝の開発、リモート作成する必要があるorigindevローカルに枝を、ので、彼は地元作成するには、このコマンドを使用する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 

 

そのため、操作の共同のマルチプレイヤーモードでは、通常はこのようなものです:

  1. まず、あなたが使用しようとすることができgit push origin <branch-name>、その変更をプッシュします。

  2. プッシュが失敗した場合、リモートであなたのローカルブランチより新しいので、私たちは、使用する必要がgit pull合併しようとしました。

  3. 合併は、紛争、紛争の解決、およびローカルにコミットがある場合は、

  4. そこを取り除くいかなる紛争や紛争後はありませんし、次に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競合がある場合、我々は最初の紛争に対処しなければなりません。

おすすめ

転載: www.cnblogs.com/saryli/p/11369173.html