이것이 git 원격 저장소에서 작업을 공유하는 방법입니다.



원격 저장소의 팀과 로컬 작업을 공유하고 변경 사항을 추적하면서 동기화 상태를 유지하면서 관리하는 방법도 배웁니다.

귀하의 작업은 게시되고 전 세계 (또는 귀하의 팀)와 공유 될 때 더 많은 가치를 더합니다 !!!

시작하기

가다 아시다시피는 오늘날 가장 많이 사용되는 버전 관리 도구입니다. 저장 , 과정버전 어떤 종류의 데이터 .
git의 주요 기능 중 일부는 속도 , 분산 자연, 보안 , 무통 분기 및 병합 와 함께 협력 여러 기여자 사이에서 작업합니다.

여기에서 토론을 시작하여 git이 어떻게 협력하다 동료와 작업을 공유하여 모두가 서로의 데이터를 손상시키지 않고 동시에 동일한 코드로 작업 할 수 있도록합니다.
이것은 개념의 원격 저장소 그림으로 오십시오.
나는 당신이 예술을 마스터했다고 가정합니다 너의 작업 디렉토리 (파일 시스템)을 준비 영역 그리고 마침내 당신의 로컬 저장소 (데이터 베이스).

이를 통해 데이터를 원격 저장소에 게시 할 수있는 다음 수준의 '원격 저장소'로 푸시 할 수 있습니다.

내 데이터가 이미 git 데이터베이스에 저장되어 있지 않나요?

네, 그렇습니다! 그러나 아래 다이어그램에 표시된 것처럼 데이터는 여전히 로컬 데이터베이스 당신 후 범하다 아직 동료와 공유하지 않았습니다.
4 계층 아키텍처
이 기사는 귀하의 로컬 저장소 다음 레이어로 이동합니다. 원격 저장소 .





원격 저장소 란?

수집 할 수있는 위치에 저장된 수집 정보의 데이터베이스 공유 팀원들에게 접속하다 .
이상적으로 호스팅됩니다 구름 또는 섬기는 사람 (로컬 또는 원격) 인터넷 또는 로컬 네트워크에서.
원격 저장소는 로컬 저장소와 같은 작업 복사본을 갖지 않도록 일반적으로 베어 저장소로 선언된다는 점을 제외하면 로컬 git 저장소와 같습니다.
이는 원격 저장소에 대한 직접 변경을 제한하기 위해 수행됩니다.

베어 저장소 개념은 원격 저장소가이를 유지하는 추가 이점입니다. 보호 팀 구성원간에 코드를 공유하는 유일한 목적으로 사용됩니다.
이것은 '를 사용하여 원격 저장소를 베어로 선언함으로써 달성됩니다.--다만'git 저장소로 초기화 할 때 플래그를 지정합니다.
이렇게하면 저장소가 git 메타 데이터 또는 다른 말로 숨겨진‘.git’디렉토리 아래에 저장된 git 객체로 생성되며 누구나 데이터를 직접 추가 할 수있는 작업 사본이 없습니다.
명령:git init --bare.

이를 염두에두고 앞으로 원격 저장소를 관리하는 더 많은 방법과 로컬 작업을 원격과 동기화하는 방법을 살펴볼 것입니다.



원격 저장소 만들기

가장 먼저 원격 저장소를 배치 할 위치를 결정해야합니다.
다음과 같은 인기있는 클라우드 기반 git 호스팅 리포지토리가 많이 있습니다. GitLab , BitBucket , GitHub , 억지로CloudForge 몇 가지 예를 들어 보겠습니다.
이 게시물에서는 GitHub가 처음으로 git 저장소를 보관하기 시작한 곳이므로 GitHub를 고려하고 있습니다. 시작하려면 GitHub 계정에 로그인 한 다음 새 저장소 생성 ,이 원격 저장소를 가리키는 URL이 생성됩니다.


Git은 저장소 URL을 지정하기 위해 ssh, git, http 및 https 프로토콜을 지원합니다.

또는 다른 곳에 프로젝트를 배치 할 수도 있습니다. Linux 서버 아래 명령에 따라-
cd $ HOME
mkdir remote_repo
cd remote_repo
git init --bare.

로컬 컴퓨터에 원격 연결

작업 복사본에 리모컨을 연결하는 것은 단순히 포인터 참조 핸들러 원격 또는 단순히 ' 원격 처리기 '.
게시하고 싶은 프로젝트로 이동합니다.cd learnRemotes
통사론:자식 원격 추가
명령:git remote add origin https://github.com/divyabhushan/learnRemotes.git

'유래 이다 기본 리모트 핸들러에 대한 참조 이름.” (원격 이름은 관련 이름이어야합니다)
다음 명령을 사용하여 작동하는지 살펴 보겠습니다.자식 원격

그게했다 :)

이름과 함께 원격 URL을 인쇄하십시오.
자식 원격 -v

잘 했어! 로컬 작업 디렉토리에서 원격 저장소에 대한 연결을 설정하면됩니다.

게시 시간

통사론:git push --all --tags[-u | -업스트림 설정]
명령:git push origin master

그래서 당신은 이것을 다음과 같이 읽습니다. '커밋의 차이를 로컬 마스터에서 시작하도록 푸시' .

GitHub 계정을 확인하면 로컬 커밋 (데이터)이 표시되어야합니다.



지점 추적

따라서 원격 저장소에 작업을 성공적으로 게시했습니다.
그러나 로컬 브랜치를 다음으로 설정하는 것이 중요합니다. 과정 원격 지점에서 자동으로 변경됩니다.
사용 '-업스트림 설정또는-유‘git push’명령과 함께‘플래그
명령:git push -u origin master

색으로 구분 된 가지


'master'브랜치에 새 커밋을 추가로 생성하고 git이 감지하는 방법을 확인합니다.
명령:자식 상태


상세 모드에서 추적 분기 표시
명령:자식 브랜치 -vv


따라서 추적 된 브랜치의 로컬 저장소와 원격 저장소간에 커밋에 차이가있을 때마다 Git에서 알려줍니다.
멋지지 않아 !!!

다른 사람들이 리모컨에 어떻게 연결합니까?

당신이 때 케이크 조각입니다 복제하다 원격 저장소 !!!

따라서 원격 저장소에서 복제하면 먼저 두 가지 작업을 수행합니다. 원격 참조 자동으로 추가되고 두 ​​번째 기본값은 분기 로 설정됩니다 과정 원격 지점 자동으로.

1 단계: 원격 저장소를 다른 사용자로 복제하십시오.
명령:git clone https://github.com/divyabhushan/learnRemotes.git developer2
cd developer2

2 단계: 리모컨 및 URL 표시
명령:자식 원격 -v


Step3 : 추적 지점 나열
명령:자식 브랜치 -vv


재미는‘개발자 2’가 자신의 작업을 시작하고 리모컨으로 밀어 붙일 때 시작됩니다.

연결하고 기여할 수 있습니다. 둘 이상의 리모컨 저장소에서 단일 프로젝트 .

원격 지점보기

명령:자식 지점 -r


'-a'옵션을 사용하여 로컬 및 원격 브랜치를 모두 인쇄하고, 몇 개의 로컬 브랜치를 생성 한 후 로컬 저장소에서 시도해보십시오.

다른 사람들이 리모컨에 어떻게 기여합니까?

초기 설정
Developer2는 다음과 같은 몇 가지 사항을 변경하기로 결정합니다.
에. 창조하다 '마스터'브랜치의 최신 커밋에서 새로운 '기능'을 만들고 새로운 커밋 ‘기능’브랜치
명령어 :
git checkout -b 기능
echo '기능 향상'> feature.txt
git add. && git commit -m '기능 향상'

비. 창조하다 '마스터'브랜치의 이전 커밋과 다른 'feature2'브랜치
명령어 :
git checkout -b feature2 95651fb
echo 'feature2 추가됨'> feature2.txt
git add. && git commit -m '기능 2 변경 추가'

추적 정보와 함께 developer2 시스템의 분기를 시각화 해 보겠습니다.

아시다시피 새 분기는 원격 분기를 추적하도록 설정되지 않았습니다.

원격으로 변경 사항 푸시
먼저‘–set-upstream 또는 -u’플래그를 사용하여‘기능’분기를 원격으로 푸시하겠습니다.
명령:git push -u origin 기능




아직 존재하지 않는 경우 새 분기가 원격에 생성됩니다 !!!

이때 'git branch -r'명령을 사용하여 원격 분기를 나열합니다.




원격 지점을 추적하는 또 다른 방법
또한 'feature2'분기도 원격의 동일한 '기능'분기를 가리 키도록 설정하겠습니다.
명령:git branch --set-upstream-to = origin / feature feature2



색상 코드 분기


빠른 팁 : 이미 해당 브랜치에있는 경우, 즉 로컬 브랜치가 이미 체크 아웃 된 경우 로컬 브랜치 이름을 생략 할 수 있습니다.

상세 모드에서 분기를 다시 나열하십시오.자식 브랜치 -vv

하이브의지도 측 조인



두 로컬 분기 'feature'및 'feature2'는 동일한 원격 분기 '기능'을 가리 킵니다.

리모컨과 동기화 유지 – 가져 오기, 당기기 및 밀기

부분을 ​​고려해 봅시다. 원격 지점 당신이 추적하고있는 것은 이미 업데이트되었습니다.
단순한 '자식 상태‘또는‘git checkout‘또는‘자식 브랜치 -vv'명령은 이러한 불일치로 경고합니다.



‘Developer2’는 먼저 로컬 참조 및 개체 (‘ 자식 가져 오기 ‘) 원격 및 로컬 변경 사항을 병합합니다 (‘git merge’).
흥미롭게도이 두 명령을 단일 'git pull'명령으로 바꿀 수 있습니다.
통사론:가다 손잡이

– 추적되지 않은 분기 용
구문 : git pull [:]
명령:git pull origin feature : feature2

– 추적 된 분기 용
구문 : git pull
명령:git pull




=> 실제로, 단순성을 위해 원격에서 끌어 올 때이 단계에서 충돌이 발생할 수 있습니다. 충돌없는 커밋 변경을 생성했습니다.

'developer2'풀 (가져 오기 및 병합) 후 원격 최신 변경 사항은 이제 자신의 작업을 게시해야합니다.
명령:git push origin HEAD : 기능
참고 : 업스트림 브랜치‘feature’는 로컬 브랜치‘feature2’이름과 일치하지 않으므로 명시 적으로 제공해야합니다.



조언 :‘HEAD’는 로컬‘feature2’브랜치의 최신 커밋입니다.

언제‘git fetch’를 사용하나요?
업데이트 만해야하는 경우 참조 헤드 원격에서 실제로 다운로드 (풀링)하지 않고.
또는 업데이트시 원격 브랜치가 수정 / 삭제 된 경우 '--치다‘옵션.
모범 사례로 로컬 저장소에서 작업을 시작할 때마다 'git fetch'명령을 실행해야합니다.

원격 관리

마지막으로 원격 및 분기 이름 변경 또는 제거와 같은 몇 가지 관리 작업을 수행 할 수 있습니다.
이는 이전 명령만큼 중요합니다.

원격 이름 변경

통사론:자식 원격 이름 바꾸기
명령:git remote rename snv_repo svn
예를 들어, 3 개의 프로젝트와 관련된 프로젝트 관리자를 생각해보십시오.


원격 참조 삭제

원격 저장소와 더 이상 동기화하지 않는다고 가정하면 해당 저장소에 대한 포인터 참조를 삭제할 수 있습니다.
그러나 이것은 원격 저장소 및 다른 작업에 영향을 미치지 않습니다.

통사론:자식 원격 제거
명령:자식 원격 제거 proj1

자바의 모델 뷰 컨트롤러


제거 된‘proj1’저장소에서 분기를 추적하도록 설정된 로컬 분기가 있다면 어떻게됩니까?
글쎄, 당신의 현지 지점 (따라서 작업)은 안전한 여전히 존재합니다. 원격 추적 참조구성 설정은 자동 제거

원격 지점 삭제

말해봐 우연히 당신을 밀어 개인적인 거친 작업 원격으로 분기 하지만 다른 사람들이 아직 확인하지 않기를 바랍니다.
원격‘svn’에서‘unfinishedWork’분기를 제거합니다.
명령:자식 브랜치 -vv# 원격 추적 분기 나열



통사론:git push --delete
명령:git push --delete svn unfinishedWork


감기

이것으로 우리는이 기사의 끝으로 왔습니다. 이것을 발견하면“ 지도 시간 ”관련, 체크 아웃 전 세계에 250,000 명 이상의 만족 한 학습자 네트워크를 보유한 신뢰할 수있는 온라인 학습 회사 인 Edureka에서 작성했습니다. Edureka DevOps 인증 교육 과정은 학습자가 SDLC의 여러 단계를 자동화하기 위해 Puppet, Jenkins, Nagios 및 GIT와 같은 다양한 DevOps 프로세스 및 도구에 대한 전문 지식을 습득하는 데 도움이됩니다.