programing

개발 브랜치를 마스터와 병합

bestprogram 2023. 4. 17. 22:32

개발 브랜치를 마스터와 병합

는 두 , 즉 두 개의 이 있습니다.master ★★★★★★★★★★★★★★★★★」developmentGitHub Repository 。저는 그림과 같이 개발부에서 모든 개발을 하고 있습니다.

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 

제가 하고 있는 절차가 맞는지 알려주세요.

으로 병합하는 을 좋아합니다.masterdevelopment 경합이 , 「」, 「」, 「 」 「 」 「 」 「 」 「 」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에, 수 할 더, 는 러, 것, 것, 는, 는, 는, 는, 는, 는, 는, yet, yet, yet, yet, yet, yet, yet, yet, yet, yet, yet, yet, yet, yet, yet, yet, yet, yet, yet, yet, yet, yet, yet, yet, yet, yet, yet, yet, yet, yet, yet,master마지막까지 손도 안 댔어요

편집: 댓글에서

언제 마지를 하려면 , 「마지」를 할 수 .--no-ff플래그를 설정합니다.으로 병합할 합니다.developmentmaster( 순서)(마지막 순서)가 할 수 에, 「마지막 순서」는, 「마지」masterdevelopment(첫 번째 단계) 워크플로우에 여러 번 포함되며, 이러한 커밋노드를 작성하는 것은 그다지 도움이 되지 않을 수 있습니다.

git merge --no-ff development

개인적으로, 제 접근 방식은 당신과 비슷합니다. 몇 개의 브랜치가 더 있고 마스터로 돌아가면 커밋이 뭉개집니다.

제 동료 중 한 명은 지점을 바꾸는 것을 별로 좋아하지 않고, 다음과 같은 것을 모두 개발부에서 실행한 채 개발부에 머무르고 있습니다.

git fetch origin master    
git merge master    
git push origin development:master

첫 번째 행은 마지막으로 로컬저장소를 갱신한 이후 마스터에 대해 수행된 업스트림커밋이 있는지 확인합니다.

두 번째는 마스터에서 개발로 변경(있는 경우)을 가져옵니다.

세 번째는 개발 브랜치(현재 마스터와 완전히 병합됨)를 오리진/마스터로 푸시합니다.

내가 그의 기본적인 작업흐름을 조금 잘못 알고 있을 수도 있지만, 그것이 그 요지입니다.

지사에 대한 지식이 없는 분들을 위한 밑바닥부터의 설명.

기본 메인/마스터 브랜치 개발 로직은 다음과 같습니다.다른 브랜치에서만 작업하기 때문에 메인/마스터 브랜치를 사용하여 Marge할 수 있는 다른 브랜치와 Marge합니다.

다음과 같은 방법으로 새로운 브랜치를 작성하기 시작합니다.

  1. 로컬 dir에 저장소 복제(또는 새 저장소 생성):
$ cd /var/www
$ git clone git@bitbucket.org:user_name/repository_name.git
  1. 새 분기를 만듭니다.마스터 브랜치 저장소의 최신 파일이 포함됩니다.
$ git branch new_branch
  1. 현재 git 브랜치를 new_branch로 변경합니다.
$ git checkout new_branch
  1. 평소처럼 코딩, 커밋을 수행합니다.
$ git add .
$ git commit -m “Initial commit”
$ git push # pushes commits only to “new_branch”
  1. 이 분기에서 작업이 완료되면 "마스터" 분기와 병합:
$ 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”

또한 Sourcetree 앱을 사용하여 변경사항과 브런치를 시각적으로 확인할 것을 권장합니다.

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

Git Flow 워크플로우를 사용할 수 있으면 좋겠습니다.개발 브랜치를 마스터로 쉽게 통합할 수 있습니다.

여기서 설명하는 git-flow 명령을 따르기만 하면 됩니다.

순서:

  • git-flow 프로젝트 설정
  • 분기를 만들어 모든 것을 합쳐서 발전하다
  • git flow release start <version_number>
  • 릴리즈에 대한 의미 있는 메시지를 제공합니다.
  • git flow release finish <version_number>
  • 모든 것을 마스터로 통합하고 브런치를 마스터로 변경합니다.
  • git push변경을 리모트 마스터에 퍼블리시합니다.

자세한 것은, http://danielkummer.github.io/git-flow-cheatsheet/ 페이지를 참조해 주세요.

네, 맞습니다만, 매우 기본적인 워크플로우처럼 보입니다.이 워크플로우에서는 변경 내용을 버퍼링하고 나서 통합을 시작할 수 있습니다.git이 지원하는 고급 워크플로우를 살펴봐야 합니다.여러 기능을 병렬로 작업할 수 있는 항목 분기 접근 방식이나 현재 워크플로우를 약간 확장하는 단계적 접근 방식을 좋아할 수 있습니다.

순서 1

로컬 git 파일이 리모트와 동기화되지만 아직 "dev" 브랜치가 존재하지 않는 새로운 "dev" 브랜치를 만들고 전환합니다.

git branch dev # create
git checkout dev # switch
# No need to git add or git commit, the current
# branch's files will be cloned to the new branch by-default.
git push --set-upstream origin dev # push the "dev" branch to the remote.

순서 2

"dev" 브랜치(1단계에 따라 현재)를 변경하고 커밋한 후 원격 "dev" 브랜치에 푸시합니다.

git add .
git commit -S -m "my first commit to the dev branch" # remove the -S if you're not "secure", secure = when you already setup crypto private and public keys (i.e "verified" green sign in github)
git push -u origin dev # push the changes to the remote, -u origin dev is optional but good to use.

순서 3

"dev" 분기를 "master"에 병합합니다.

git checkout dev # switch to "dev" branch if you're not already.
git merge master # optionally, this command is being used to resolve any conflicts if you pushed any changes to your "master" but "dev" doesn't have that commit.
git checkout master # switch to "master", which is the branch you want to be merged.
git merge --no-ff dev # merge the "dev" branch into the "master" one.

Mac 또는 Ubuntu를 사용하는 경우 지점의 작업 폴더로 이동합니다.터미널 내

harisdev가 브랜치네임이라고 가정합니다.

git checkout master

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

git merge harisdev 

git push origin master

브랜치를 삭제하는 마지막 명령어.

$ git branch -d harisdev

제가 원래 이렇게 해요.먼저 변경 내용을 마스터에 병합할 준비가 되었는지 확인합니다.

  1. 이 최신인지 아닌지를 합니다.git fetch
  2. 되면, 「」를 참조해 .git checkout master.
  3. 합니다.git pull
  4. 되면 '마지막으로 하다'로 수.git merge development
  5. 을 푸시하다로 푸시합니다.git push -u origin master그럼 끝이야

git marge에 대한 자세한 내용은 기사에서 확인할 수 있습니다.

@Sailesh 및 @DavidCulp를 기반으로 합니다.

(on branch development)
$ git fetch origin master
$ git merge FETCH_HEAD
(resolve any merge conflicts if there are any)
$ git checkout master
$ git merge --no-ff development (there won't be any conflicts now)

첫 번째 명령어를 실행하면 리모트마스터에 대한 업스트림 커밋이 모두 이루어지며 Sailesh 응답은 실행되지 않습니다.

두 번째는 병합을 수행하고 충돌을 만든 다음 해결할 수 있습니다.

그러면 마스터를 체크아웃하여 마스터로 전환할 수 있습니다.

그런 다음 개발 분기를 로컬 마스터에 병합합니다.no-ff 플래그는 머지 전체를 추적할 수 있도록 마스터에 커밋노드를 만듭니다.

그런 다음 병합을 커밋하고 푸시할 수 있습니다.

이 절차에서는 개발에서 마스터로의 병합 커밋이 있는지 확인하고 개발 브랜치를 보면 개발 중에 해당 브랜치에 대해 수행한 개별 커밋을 볼 수 있습니다.

필요에 따라 머지 커밋을 푸시하기 전에 머지 커밋을 변경할 수 있습니다.개발 브랜치에서 수행된 작업의 요약을 추가할 수도 있습니다.

편집: 원래 답변은 다음과 같습니다.git merge master안 했으니까 하는 게 것 같아요.git merge FETCH_HEAD/마스터 후

1) 지점 개발에서 다음 명령을 사용하여 git 상태를 확인합니다.

git status

커밋되지 않은 코드는 없어야 합니다.이 경우 개발 브랜치에 코드를 푸시합니다.

git add *

git commit -m "My initial commit message"

git push origin Development

2) Development 브랜치에서 다음 두 가지 명령을 실행합니다.

git branch -f master HEAD

git push -f origin master

그러면 개발 브랜치코드가 마스터 브랜치에 푸시됩니다.

개발 부서를 '체크아웃'하면...

 git add .
 git commit -m "first commit"
 git push origin dev
 git merge master

 git checkout master 
 git merge dev
 git push origin master 

가장 쉬운 해결책은

git checkout master
git remote update
git merge origin/Develop -X theirs
git commit -m commit -m "New release"
git push --recurse-submodules=check --progress "origin" refs/heads/Master

또, 사용중의 모든 브랜치의 이력도 보존됩니다.

gerrit 를 사용하고 있는 경우는, 다음의 커맨드가 완전하게 동작합니다.

git checkout master
git merge --no-ff development

기본 커밋 메시지로 저장할 수 있습니다.변경 ID가 생성되었는지 확인합니다.다음 명령을 사용하여 확인할 수 있습니다.

git commit --amend

그런 다음 다음 명령을 사용하여 를 누릅니다.

git push origin HEAD:refs/for/refs/heads/master

다음과 같은 오류 메시지가 나타날 수 있습니다.

! [remote rejected] HEAD -> refs/for/refs/heads/master (you are not allowed to upload merges)

이를 해결하기 위해 게릿 프로젝트 관리자는 게릿에 'refs/for/refs/heads/master' 또는 'refs/for/refs/heads/*'라는 이름의 참조서를 작성해야 한다(향후 모든 지점을 포함).그런 다음 이 참조에 대해 'Push Merge Commit' 권한을 부여하고 GCR을 제출하기 위해 필요한 경우 'Submit' 권한을 부여합니다.

위의 푸시 명령어를 다시 시도하면 동작합니다.

크레딧:

https://github.com/ReviewAssistant/reviewassistant/wiki/Merging-branches-in-Gerrit

https://stackoverflow.com/a/21199818/3877642

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

2. //switch to master branch
git checkout master 

3. //pull all the changes if any from (current development branch)
git pull origin (current development branch)

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

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

Error
To https://github.com/rajputankit22/todos-posts.git
 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'https://github.com/rajputankit22/todos-posts.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

Then Use 
5. //push the master branch forcefully
git push -f origin master

언급URL : https://stackoverflow.com/questions/14168677/merge-development-branch-with-master