자식 연구 노트 - 많은 사람들이 함께 작업

원격 저장소에서 복제 할 때, 사실, 힘내 자동으로 현지 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 push origin master

다른 지점을 밀어하려는 경우, 예를 들어 dev, 읽기 :

$ git push origin dev

그러나, 원격 푸시 로컬 분기를 취해야하지, 다음 무슨 일이 필요하지 않은 지점을 밀어 필요가 있겠습니까?

  • master지점은 너무 원격 시간과 동기화 할 수있는 주요 지점이다;

  • dev지점은 모든 팀 구성원이 작업을 할 필요가 있으므로 원격으로 동기화 할 필요가 개발 지점입니다;

  • 브랜치 버그 사장이 결국 여러 버그 수정 당신에게 매주보고 싶어하지 않는 리모컨을 밀어 필요가 없습니다 만 로컬로 버그를 수정;

  • 기능 지점은 당신과 당신의 작은 파트너가 그것을 개발하는 여부에 따라, 원격 밀어 것으로 예상된다.

즉, 당신의 기분이 될 수에 따라, 로컬 재생을 숨겨 푸시 여부를 소유 할 수 분기, 힘내입니다!

 

크롤링 지점

많은 사람들이 함께 작업 할 때, 우리는 갈 것 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 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연결 분기가, 설정되지하라는 메시지가 표시 devorigin/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성공하지만, 갈등과 관련, 수동 방법 및 지점 관리를 해결, 해결해야하는 충돌을 해결하기 위해 동일. 제출 해결 한 후, 다음 밀어 :

$ 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