Git / Git Extension에서 "squash"와 "fixup"의 차이점은 무엇입니까?
나는 한동안 Git Extensions 를 사용해 왔지만 (굉장합니다!) 다음에 대한 간단한 대답을 찾지 못했습니다.
때로는 커밋 메시지를 입력 할 때 오타를 만듭니다. 내 친구가 Git Extentions에서 다음과 같은 방법으로 수정하는 방법을 보여주었습니다.
커밋> 고급> 수정 커밋을 마우스 오른쪽 버튼으로 클릭합니다.
그런 다음 "수정"확인란을 선택하고 내 메시지와 짜잔을 다시 작성합니다! 내 커밋 메시지가 수정되었습니다.
그러나이 다른 옵션은 "스쿼시 커밋"... 나는 그것이 무엇을하는지 항상 궁금했다?!
내 질문은 :
누군가 Git / Git Extentions 에서 Squash 커밋 과 Fixup 커밋 의 정확한 차이점이 무엇인지 간단히 설명 하시겠습니까 ? 그들은 가지 봐 ... "유사" 나에게 :
Git Extensions가 구체적으로 무엇을하는지 모르겠지만 git rebase
스쿼시로 커밋을 자동으로 스쿼시하거나 수정하는 옵션이 있습니다! 또는 수정! 접두사 각각 :
--autosquash, --no-autosquash
When the commit log message begins with "squash! ..." (or "fixup!
..."), and there is a commit whose title begins with the same ...,
automatically modify the todo list of rebase -i so that the commit
marked for squashing comes right after the commit to be modified,
and change the action of the moved commit from pick to squash (or
fixup).
스쿼시와 수정의 차이점은 리베이스 중에 squash
작업은 원본과 스쿼시 커밋의 메시지를 결합하라는 메시지를 표시하는 반면 fixup
작업은 원본 메시지를 유지하고 수정 커밋에서 메시지를 삭제한다는 것입니다.
간단히 말해, 일련의 커밋을 리베이스 할 때으로 표시된 각 커밋 squash
은 메시지를 pick
또는 reword
커밋 메시지의 일부로 사용할 수있는 기회를 제공합니다 .
사용 fixup
하면 해당 커밋의 메시지가 삭제됩니다.
에서 자식-REBASE의 문서 :
두 개 이상의 커밋을 하나로 접으려면 두 번째 및 후속 커밋에 대한 "pick"명령을 "squash"또는 "fixup"으로 바꿉니다. 커밋에 다른 작성자가있는 경우 접힌 커밋은 첫 번째 커밋의 작성자에게 귀속됩니다. 접힌 커밋에 대해 제안 된 커밋 메시지는 첫 번째 커밋의 커밋 메시지와 "squash"명령을 사용한 커밋 메시지의 연결이지만 "fixup"명령으로 커밋의 커밋 메시지를 생략합니다.
나는 git 확장을 땜질했고 많은 커밋을 하나로 스쿼시하지 못했습니다. 이를 위해 명령 줄에 의존해야 했고이 게시물이 유용 하다는 것을 알았 습니다.
git rebase -i Head~2
이것은 대화 형 리베이스이며 다음 사항에 유의하십시오.
- 여기서 ~ 2는 현재 헤드를 포함하여이 작업에 참여하려는 커밋 수를 나타냅니다.
- 후속 대화 형 편집 창을 편집하고 첫 번째 항목을 "선택"으로두고 후속 줄을 "스쿼시"로 바꿔야합니다. 불투명 한 경우 위 링크의 지침이 훨씬 더 명확합니다.
'program story' 카테고리의 다른 글
Visual Studio Code를 Git MergeTool의 기본 편집기로 사용하는 방법 (0) | 2020.08.28 |
---|---|
HttpURLConnection에서 InputStream 개체를 가져 오는 동안 FileNotFoundException이 발생했습니다. (0) | 2020.08.28 |
어떤 C # 용 ReSharper 4+ 라이브 템플릿을 사용하십니까? (0) | 2020.08.28 |
JQuery로 GET 및 POST 변수를 얻는 방법? (0) | 2020.08.28 |
장치에서 sqlite 데이터베이스 디버깅 (0) | 2020.08.28 |