Git, Gerrit, Hudson(3) - GIT 기술 요약
코드 리뷰가 존재하기 때문에 이런 상황이 발생할 수 있습니다. 동시에 여러 사람의 코드가 리뷰에 의해 변경되고, 만약 한 사람이 당신과 같은 곳의 코드를 바꾸면, 그의 코드는 리뷰를 통해 원격 코드 라이브러리에 합쳐집니다.코드가 리뷰를 통해 통합되면 충돌이 발생합니다.충돌은 원격에서 발생하기 때문에 로컬rebase 방법을 사용할 수 없습니다. 이 때 다음과 같은 절차를 통해 충돌을 해결해야 합니다.
# , ProjectA
cd ProjectA
# , FixForBug1922
git checkout FixForBug1922
#
git fetch origin
# rebase , git rebase origin/<remote_branch>
git rebase origin/1.0.1
# rebase ,
#
git add <conflict_file>
# rebase
git rebase --continue
# push
git push origin FixForBug1922:refs/for/1.0.1
주의:push 후 코드 리뷰를 다시 진행해야 합니다.
위 단계 중 한 단계:git fetch.fetch는pull보다 더 가는 입도의 조작입니다.fetch는 원격 코드를 떼어내고,pull은fetch를 실행한 후에 로컬 코드와 통합합니다.그래서 위의 명령은 실제적으로git에게 원격 코드를 떼어내라고 하는 것이지만 합병하지 말라고 하는 것이다(우리가 지금 특징 지점에 있기 때문에 합병은 틀림없이 충돌하여 오류가 발생할 것이다).fetch 명령은 자동으로 로컬에서 원격 지점의 로컬 복사를 만듭니다. 이 복사는 우리가 직접 할 수 없습니다. (만약 git checkout을 강제로 호출해서 이 복사를 삽입한다면,git는 자동으로 로컬 지점을 만들고, 자동으로 만들어진 로컬 지점에 삽입합니다.)rebase 명령을 사용하여 피쳐 브랜치를 재배치하고 충돌을 해결하는 것이 좋습니다.
2. 로컬 브랜치 개명
로컬 branch의 이름을 바꾸려는 경우가 있습니다. 명령은 다음과 같습니다.
git branch -m <old_branch> <new_branch>
# , feature branch "FixBug123" "FixBug124"
git branch -m FixBug123 FixBug124
3. 로컬 브랜치 병합
때때로 로컬에서 하나의 branch 내용을 다른 branch에 통합하고 싶을 때가 있습니다.예를 들어 수정을 하기 전에 새로운featurebranch가 아니라 원래의featurebranch에서 수정을 했다고 가정하면push에서 이featurebranch와 관련된 원격의review가 통과되었거나 (abandon에 의해 통과되었음)을 발견하면push가 올라가지 못할 것이다.하나의 해결 방법은 새로운featurebranch를 만들고 새로 만든 수정된 내용을 새로운featurebranch에 통합하는 것이다.merge 명령 사용:
# feature branch
git checkout -b <new_feature_branch>
# branch merge branch
git merge <old_feature_branch>
merge 명령의 문법은rebase와 비슷합니다. 먼저 새로운branch로 전환한 다음merge/rebase가 복사된branch입니다.예를 들면 다음과 같습니다.
# merge FixBug123 FixBug125
# 1. tracking branch:
git checkout 1.0.0
# 2. feature branch
git checkout -b FixBug125
# 3. feature branch merge:
git merge FixBug123
3. 로컬 브랜치 삭제
로컬 브랜치를 삭제하려면 다음 명령을 실행합니다.
git branch -D <local_branch>
4. Gerrit에 새 프로젝트 작성
우선, Gerrit에 Administrator 권한이 있어야 합니다. 그렇지 않으면 명령을 실행할 수 없습니다.
git bash를 엽니다. 로컬에 프로젝트가 있으면 프로젝트의 루트 디렉터리에 들어갑니다.다음 명령을 입력합니다.
ssh -p 29418 review gerrit create-project --name <project_name> --parent <parent_name>
여기서 <프로젝트name>만들려는 프로젝트의 이름입니다.
Gerrit에 로그인하면 Admin->Projects에서 새 프로젝트를 볼 수 있습니다(현재 비어 있음). Admin->Projects->[project name]->General을 선택하면 Description에서 프로젝트에 대한 설명을 입력할 수 있습니다. Project Options에서는'Cherry Pick'을 추천하고'Automatically resolve conflicts'와'Require Change-ID in commit message'를 선택하십시오.마지막으로 저장합니다.
그런 다음 git bash에서 입력을 계속합니다(프로젝트의 루트 디렉토리에 있음).
# , .git
git init
#
git add *
# .classpath
git add .classpath
# .project
git add .project
# , comments
git commit
로컬로 push를 원격으로 제출합니다. (이 때 마스터에 있어야 합니다.)
git push origin master:refs/for/master
이 동작은 Gerrit에 새 리뷰를 생성합니다. 리뷰가 통과될 때까지 코드를 원격 라이브러리에 저장할 수 있습니다.
Admin->Projects->[project name]->Branches를 선택하고'Branch Name'및'Initial Revision'(일반 마스터)을 입력하여 원격 브랜치를 생성합니다.
로컬 git bash에서pull 명령을 실행하려면:
git pull
이렇게 하면 방금 만든 원격 브랜치 정보를 로컬로 끌어서 이제 로컬에서 Tracking Branch 링크 원격 브랜치를 만들 수 있습니다.
git checkout -b 1.0.0 -t origin/1.0.0
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Heroku H10/503 오류 해결 방법 - 이야기오후 2시 30분까지 내 이해 수준에 따라 배포할 준비가 된 내 코드 를 완성했습니다. 몇 달 전에 플랫폼에 Node.js 앱을 배포하여 을 따르기로 결정했습니다. How to solve Heroku H10 erro...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.