[git] 마스터와 개발 지점 병합

나는 두 가지, 즉이 masterdevelopmentGitHub의 저장소에서. 그림과 같이 개발 지점에서 모든 개발을 수행하고 있습니다.

git branch development
git add *
git commit -m "My initial commit message"
git push -u origin development

이제 development지점의 모든 변경 사항을에 통합하려고 합니다 master. 내 현재 접근 방식은 다음과 같습니다

git checkout master
git merge development
git push -u origin master

내가 따르는 절차가 올바른지 알려주십시오.



답변

나는 일반적으로 첫 번째 로 병합 master하여 development충돌이있는 경우 development지점 자체 에서 해결할 수 있으며 내 master상태는 깨끗합니다.

(on branch development)$ git merge master
(resolve any merge conflicts if there are any)
git checkout master
git merge development (there won't be any conflicts now)

두 가지 접근 방식에는 큰 차이가 없지만 분기를 병합 한 master후 아직 병합하지 않으려는 경우 또는 병합하기 전에 더 많은 작업이 수행되는 경우가 있습니다. 그래서 나는 master마지막 물건까지 손대지 않는 경향이 있습니다.

편집 : 의견에서

병합 한 사람과시기를 추적하려면 병합 --no-ff하는 동안 플래그를 사용할 수 있습니다 . 이 병합 경우에만 일반적으로 유용 developmentmaster병합해야 할 수도 있기 때문에, (마지막 단계) masterdevelopment워크 플로우에 (첫 번째 단계)를 여러 번, 그리고 매우 유용하지 않을 수도 있습니다 이들에 대한 노드를 커밋 작성.

git merge --no-ff development


답변

개인적으로, 저의 접근 방식은 당신과 비슷합니다. 몇 가지 더 많은 지점과 마스터로 돌아갈 때 커밋이 스쿼시됩니다.

저의 동료 중 한 명이 브랜치를 너무 많이 바꾸는 것을 좋아하지 않고 개발 브랜치에서 실행 된 다음과 비슷한 것을 사용하여 개발 브랜치에 머물러 있습니다.

git fetch origin master

git merge master

git push origin development:master

첫 번째 줄은 마지막으로 로컬 리포지토리를 업데이트 한 이후에 마스터로 만든 업스트림 커밋이 있는지 확인합니다.

두 번째는 이러한 변경 사항을 마스터에서 개발로 가져옵니다.

세 번째는 개발 브랜치 (이제 마스터와 완전히 병합 됨)를 출발지 / 마스터로 푸시합니다.

나는 그의 기본 워크 플로우가 약간 잘못되었을 수도 있지만 그것이 주요 요점입니다.


답변

가지에 대한 지식없이 여기에 온 사람들을 위해 바닥에서 설명합니다.

기본 마스터 브랜치 개발 로직은 다음과 같습니다. 다른 브랜치에서만 작업하고 마스터 만 사용하여 다른 브랜치를 병합합니다.

이런 식으로 새 분기를 만들기 시작합니다.

1) 로컬 디렉토리에서 저장소를 복제하거나 새 저장소를 작성하십시오.

$ cd /var/www
$ git clone git@bitbucket.org:user_name/repository_name.git

2) 새로운 지점을 만듭니다. 마스터 브랜치 저장소의 최신 파일을 포함합니다.

$ git branch new_branch

3) 현재 자식 분기를 new_branch로 변경하십시오.

$ git checkout new_branch

4) 평소와 같이 코딩, 커밋…

$ git add .
$ git commit -m “Initial commit”
$ git push (pushes commits only to “new_branch”)

5)이 지점에서 작업이 완료되면 “마스터”지점과 병합하십시오.

$ git merge master
$ git checkout master (goes to master branch)
$ git merge development (merges files in localhost. Master shouldn’t have any  commits ahead, otherwise there will be a need for pull and merging code by hands!)
$ git push (pushes all “new_branch” commits to both branches - “master” and “new_branch”)

업데이트 : 시각적 변경 사항을보고 모든 논리와 커밋을 더 잘 보려면 GitKraken을 사용하는 것이 좋습니다.


답변

Git Flow 워크 플로를 사용할 수 있다면 좋을 것 입니다. 개발 브랜치를 쉽게 마스터로 병합 할 수 있습니다.

당신이하고 싶은 것은 여기에 언급 된 git-flow 명령을 따르는 것입니다.

단계 :

  • git-flow 프로젝트 설정
  • 가지를 만들고 모든 것을 병합하여 개발
  • 명령을 실행 git flow release start <version_number>
  • 그런 다음 릴리스에 대한 의미있는 메시지 를 제공하십시오.
  • 명령을 실행 git flow release finish <version_number>
  • 모든 것을 master 로 병합 하고 브랜치를 master로 변경합니다 .
  • 명령 git push을 실행하여 변경 사항을 원격 마스터 에 공개하십시오 .

자세한 내용은 http://danielkummer.github.io/git-flow-cheatsheet/ 페이지를 방문 하십시오.


답변

1. //pull the latest changes of current development branch if any
git pull (current development branch)

2. //switch to master branch
git checkout master

3. //pull all the changes if any
git pull

4. //Now merge development into master
git merge development

5. //push the master branch
git push origin master


답변

예, 맞습니다. 그러나 매우 기본적인 워크 플로처럼 보입니다. 통합을 준비하기 전에 변경 사항을 버퍼링하는 것입니다. 자식이 지원하는 고급 워크 플로 를 살펴 봐야 합니다. 여러 기능을 동시에 작업 할 수 있는 주제 분기 접근 방식 또는 현재 워크 플로우를 약간 확장 하는 눈금 방식 을 원할 수 있습니다 .


답변

Mac 또는 Ubuntu를 사용하는 경우 지점의 작업 폴더로 이동하십시오. 터미널에서

harisdev가 branchname이라고 가정하십시오.

git checkout master

추적되지 않거나 커밋되지 않은 파일이 있으면 오류가 발생하고 추적되지 않거나 커밋되지 않은 모든 파일을 커밋하거나 삭제해야합니다.

git merge harisdev

git push origin master

분기를 삭제하는 마지막 명령입니다.

$ git branch -d harisdev