문제

Master로 들어갈 준비가 되었을 때 기능 브랜치를 도와줄 git 명령을 찾고 있습니다.이 git 명령은 내 브랜치의 모든 변경 사항을 마스터 위에 있는 단일 커밋으로 압축합니다.오늘은 다음을 사용하여 이 작업을 수행합니다.

git rebase origin/master
git rebase -i HEAD~4

여기서 4는 스쿼시 커밋 수입니다.그러나 이를 위해서는 내가 얼마나 많은 커밋을 가지고 있는지 알아야 합니다.오늘은 다음을 실행하여 이 작업을 수행합니다.

git log HEAD...origin/master

그런 다음 커밋 수를 계산합니다.

나는 이것을 하기 위한 더 좋은 방법이 있어야 한다고 생각합니다.아니면 다른 사람들도 다 이런가요?

도움이 되었습니까?

해결책

당신이 해야 할 일은:

git checkout feature_branch
git rebase master
git checkout master
git merge --squash feature_branch

다음과 같이 문서 ~을 위한 git merge --squash 말하다:

실제 병합이 발생한 것처럼 작업 트리 및 인덱스 상태를 생성합니다(병합 정보 제외). 하지만 실제로 커밋을 하거나 HEAD를 이동하거나 다음 git commit 명령이 병합을 생성하도록 $GIT_DIR/MERGE_HEAD를 기록하지 마세요. 저지르다.이를 통해 현재 분기 위에 단일 커밋을 생성할 수 있으며 그 효과는 다른 분기(또는 문어의 경우 그 이상)를 병합하는 것과 동일합니다.

그 후에는 다음을 수행할 수 있습니다. git commit 이미 준비된 변경사항입니다.

다른 팁

더 큰 팀에서 일하는 많은 경험에서 모여있는 것입니다 :

# Get latest from master
git checkout master
git pull --rebase

# rebase master into your feature branch
git checkout feature/my-feature
git rebase master --preserve-merges

# merge feature into master
git checkout master

# DO ONLY ONE of the 2 options below
# if you only have one or (maybe) 2 commits in your feature branch
git merge feature/my-feature

# OR
# this forces an empty merge commit (useful if we need to roll things back)
git merge --no-ff feature/my-feature

# if you use Github, this should also close the pull request
git push origin master
.

이 도움이되기를 바랍니다!

당신이 git merge --squash를 찾고 있다고 생각합니다.기능 분기의 커밋을 마스터로 가져 와서 스쿼시하여 단일 커밋을 만들 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top