스쿼시 내 마지막 x는 git를 사용하여 함께 커밋합니다
질문
GIT를 사용하여 마지막 X를 하나의 커밋으로 함께 스쿼시 할 수 있습니까?
답변
Git Rebase 또는 Git Merge --Squash 없이도 쉽게이 작업을 수행 할 수 있습니다.이 예제에서는 마지막 3 가지 커밋을 스쿼시 할 것입니다.
새로운 커밋 메시지를 처음부터 작성하려면 다음과 같이 충분합니다.
git reset --soft HEAD~3 &&
git commit
기존 커밋 메시지를 연결하여 새 커밋 메시지를 편집하려면 (즉, Pick / squash / squash / ... / squash git rebase -i 명령 목록과 비슷한 것과 비슷한 것으로) 추출해야합니다.그 메시지와 Git Commit에게 전달하십시오.
git reset --soft HEAD~3 &&
git commit --edit -m"$(git log --format=%B --reverse HEAD..HEAD@{1})"
이 두 가지 방법은 마지막 세 가지 커밋을 같은 방식으로 한 번의 새로운 커밋으로 만납니다.소프트 재설정은 스쿼시를 원하지 않는 마지막 커밋으로 머리를 다시 포인트합니다.인덱스 나 작업 트리가 소프트 리셋에 의해 터치되어 새로운 커밋을 위해 원하는 상태로 인덱스를 남겨 두지 않아도됩니다 (즉, 이미 "던지기위한 커밋의 모든 변경 사항이 있음").
답변
설명서에 설명 된대로 "Squash"또는 "Fixup"을 사용하여 두 번째 및 후속 커밋에서 "Pick"를 대체하는 Git Rebase -i
이 예에서
답변
이를 위해 Git Merge --squash를 사용할 수 있습니다. 이는 Git Rebase -i보다 약간 더 우아합니다.당신이 마스터에 있다고 가정 해보고 지난 12 명의 커밋을 하나로 만드고 싶습니다.
경고 : 먼저 Git 상태가 깨끗한 작업을 확인하십시오 (Git Reset - Hard가 스테이징 및 비정상적 인 변경 사항을 버릴 것임)
그 다음에:
# Reset the current branch to the commit just before the last 12:
git reset --hard HEAD~12
# HEAD@{1} is where the branch was just before the previous command.
# This command sets the state of the index to be as it would just
# after a merge from that commit:
git merge --squash HEAD@{1}
# Commit those squashed changes. The commit message will be helpfully
# prepopulated with the commit messages of all the squashed commits:
git commit
GIT 병합에 대한 설명서는 --squash 옵션을보다 자세하게 설명합니다.
업데이트 : 간단한 GIT 재설정 - 소프트 헤드 ~ 12 && Git Commit ~ Chris Johnsen이 스쿼시하는 모든 커밋 메시지로 미리 제공되는 커밋 메시지를 제공하는 것이 좋습니다.
답변
가능한 경우 Git 재설정을 피하는 것이 좋습니다. 특히 Git-Novices.정말로 숫자를 바탕으로 프로세스를 자동화 할 필요가없는 한 이국적인 방식이 덜 ...
- Put the to-be-squashed commits on a working branch (if they aren't already) -- use gitk for this
- Check out the target branch (e.g. 'master')
git merge --squash (working branch name)
git commit
커밋 메시지는 스쿼시를 기반으로 미리 채워집니다.
답변
이 편리한 블로그 게시물 덕분 에이 명령을 사용하여 마지막 3 가지 커밋을 스쿼시 할 수 있다는 것을 알았습니다.
git rebase -i HEAD~3
추적 정보 / 원격 Repo가없는 로컬 지점에있을 때도 작동하는 것처럼 유용합니다.
이 명령은 정상에 따라 재정렬, 스쿼시, reword 등을 변경할 수있는 대화식 Rebase 편집기를여십시오.

답변
2020 리베이스가없는 간단한 솔루션 :
git 재설정 - 소프트 헤드 ~ 2.
git commit -m "새로운 커밋 메시지"
git push -f.
2는 마지막 두 가지 커밋을 쿼싱 할 수 있음을 의미합니다.모든 번호로 교체 할 수 있습니다
출처:https://stackoverflow.com/questions/5189560/squash-my-last-x-commits-together-using-git
최근댓글