커밋 메시지를 변경하지 않고 커밋을 수정하는 방법 (이전 커밋을 재사용)?


657

A가없이 커밋 수정하는 방법이 있나요 vi(또는 사용자 $EDITOR) 커밋 메시지를 수정하는 옵션 팝업, 단순히 이전 메시지를 재사용?


6
나는 어려운 길을 배우고 나름대로 내 자신의 질문을 줄였다.
Sridhar Sarnobat

28
이미 푸시 된 것을 수정하지 않는 것과 같이 특정 규칙을 준수하는 한, 수정이 나쁜 이유가 될 이유는 없습니다.
paullb

3
단일 커밋 변경 중 간헐적 인 커밋 작업에는 수정 커밋을 사용해서는 안됩니다. 이를 위해 로컬로 올바르게 커밋 한 다음 커밋 기록 을 스쿼시 해야합니다 (@ Sridhar-Sarnobat)
DBCerigo

3
@DBCerigo에 전적으로 동의합니다. 내가 수정해야 할 유일한 상황은 이전 커밋에서 파일을 스테이징하는 것을 잊었을 때입니다 (예를 들어 파일이 새롭기 때문에 git commit -a를 실행할 때 자동 스테이징되지 않기 때문에) 소급 적으로 커밋하려고합니다.
Sridhar Sarnobat가

1
히스토리 변경으로 인한 위험을 인식하더라도 가장 최근의 커밋 메시지에 만족하지 않고 리베이스하지 않고 다시 말하고 싶은 경우에도 다른 시간 수정이 유용합니다.
Sridhar Sarnobat

답변:


1011

git 1.7.9 버전부터 git commit --amend --no-edit결과를 얻는 데 사용할 수도 있습니다.

여기에는 타임 스탬프와 같은 다른 커밋의 메타 데이터는 포함되지 않을 것입니다.


42
또한 "amend = commit -a --amend --no-edit"별칭을 추가하여 --no-edit 플래그를보다 쉽게 ​​기본값으로 지정할 수 있습니다.
Jherico

1
@Jherico -a를 제거하는 것이 좋습니다. 원자 커밋을 수행하십시오. 검토하거나 리베이스하는 것이 더 쉽습니다. :)
frouo

120

git commit -C HEAD --amend당신이 원하는 것을 할 것입니다. 이 -C옵션은 다른 커밋에서 메타 데이터를 가져옵니다.


15
앤디의 대답에 추가하십시오. 이것이 자주하는 일이라면를 사용하여 별명을 설정할 수 있습니다 git config --global alias.amend 'commit --amend -C HEAD'. 그런 다음 git amend바로 가기 로 사용할 수 있습니다 .
mikej

9
C'mon 여러분, 게으르지 말고, git을 업그레이드하고 Shaggle이 제안한 내장 명령을 사용하십시오! -C 옵션에 하나 더하기.
Dimitris Baltas 2016 년

4
타임 스탬프뿐만 아니라 제작 정보도!
user1338062

3
@RyanCastner 실제로, 당신이 말하고있는 의견은 2013 년입니다. 현재 실행중인 git 버전을 사용하면 --amend다른 옵션이 없어도 작성자 날짜는 유지되지만 커밋 날짜는 변경됩니다. 따라서 나는 오래된 의견을 제거했습니다.
Ruben Verborgh

2
실제로이 답변은 허용되는 답변이 아니더라도 다른 방식으로 유용합니다. 다른 답변과 달리을 사용할 필요는 없습니다 —amend. 새 커밋을 만들 수 있지만 이전 커밋과 동일한 메시지를 사용할 수 있습니다. 유용하지는 않지만 좋은 커밋 메시지를 생각하지 않고 작업을 저장하는 경우 기본적으로 커밋 메시지가 표시됩니다. 메시지를 계속 재사용합니다.—message=“Work in progress (untested)”
Sridhar Sarnobat

67

git commit --amend <<< :wqvi (m)을 가진 경우 다른 (어리 석음) 가능성이 있습니다 $EDITOR.


39
이 유스 케이스에 필요하지 않더라도 vim에 파이프 할 수 있다는 것을 알지 못했습니다. 그것은 몇 가지 흥미로운 가능성을 열어줍니다. 좋은 팁.
Sridhar Sarnobat

6
... <<< ZZ타이핑이 적을 수도 있습니다;)
Ruslan

6
.. 그리고 훨씬 적은- ... <<< :x:)
skwisgaar

3
나는 그것이 바보 같은 생각하지 않습니다. vi를 여는 모든 명령의 워크 플로우를 향상시키는 좋은 방법입니다. vi.
B 세븐

12
트리플 꺾쇠 괄호. 새로운 소식입니다.
oligofren

16

허용되는 답변을 확장하려면 다음을 수행하십시오.

git commit --amend --no-edit -a

현재 변경된 파일을 추가합니다.


11

허용 된 답변을 사용하여 별칭 만들기

 oops = "!f(){ \
    git add -A; \
    if [ \"$1\" == '' ]; then \
        git commit --amend --no-edit; \
    else \
        git commit --amend \"$@\"; \
    fi;\
}; f"

그럼 넌 할 수있어

git oops

모든 것을 추가하고 동일한 메시지를 사용하여 수정합니다.

또는

git oops -m "new message"

메시지 교체 수정

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.