답변:
git commit --amend
편집기를 열어 가장 최근의 커밋 메시지를 변경할 수 있습니다. 또한 다음을 사용하여 커밋 메시지를 명령 줄에서 직접 설정할 수 있습니다.
git commit --amend -m "New commit message"
그러나 여러 줄 커밋 메시지 나 작은 수정 사항을 입력하기가 더 번거로울 수 있습니다.
이 작업 을 수행하기 전에 작업 복사본 변경이 준비되어 있지 않은지 확인하십시오. 그렇지 않으면 변경 사항 도 커밋됩니다. ( Unstaged 변화는 최선을 다하고되지 않습니다.)
커밋을 이미 원격 브랜치로 푸시 한 경우-위에서 설명한 커밋을 로컬로 수정 한 후 커밋 을 강제로 푸시해야합니다 .
git push <remote> <branch> --force
# Or
git push <remote> <branch> -f
경고 : 강제 푸시는 원격 분기를 로컬 분기의 상태로 덮어 씁니다 . 로컬 지점에없는 원격 지점에 커밋이 있으면 해당 커밋 이 손실됩니다.
경고 : 이미 다른 사람과 공유 한 커밋을 수정하는 데주의하십시오. 수정 커밋은 본질적으로 다른 SHA ID 를 갖도록 다시 작성 하므로 다른 사람들이 이전 커밋 사본을 다시 작성한 경우 문제가됩니다. 이전 커밋의 사본을 가진 사람은 작업을 새로 다시 작성된 커밋과 동기화해야 할 수 있습니다. 때로는 어려울 수 있으므로 공유 커밋 기록을 다시 쓰려고 할 때 다른 사람과 조정하거나 공유 커밋을 다시 쓰지 않도록하십시오. 전부.
또 다른 옵션은 대화식 리베이스를 사용하는 것입니다. 최신 메시지가 아닌 경우에도 업데이트하려는 메시지를 편집 할 수 있습니다.
Git 스쿼시를 수행하려면 다음 단계를 따르십시오.
// n is the number of commits up to the last commit you want to be able to edit
git rebase -i HEAD~n
커밋을 스쿼시 한 후- e/r
메시지 편집을 위해를 선택하십시오 .
사용할 때 n 개 이상의 커밋 git rebase -i HEAD~n
이있을 수 있습니다 . Git은 마지막 n 개의 커밋에서 모든 커밋을 "수집"하고, 해당 범위 사이에 병합이 있으면 모든 커밋도 볼 수 있으므로 결과는 n +입니다.
하나 이상의 브랜치에서이 작업을 수행해야하고 컨텐츠를 수정할 때 충돌이 발생할 수있는 경우 git rerere
Git이 이러한 충돌을 자동으로 해결하도록 설정하고 설정 하십시오.
git commit --amend
만큼 강력하지 않습니다 git rebase -i
.
git commit --amend
(?) 마스터 커밋을 수정할 수 있습니다.
git push -f origin branchname
git push -f
다른 사람들이 동일한 저장소를 사용하는 경우 @hughes는 조금 위험 하지 않습니까?
git commit --amend -c HEAD
. 이전 커밋 메시지로 미리 채워진 편집기가 열리므로 변경할 수 있습니다.
git commit --amend -m "your new message"
수정하려는 커밋이 최신이 아닌 경우 :
git rebase --interactive $parent_of_flawed_commit
결함이있는 커밋을 여러 개 수정하려면 가장 오래된 커밋의 부모를 전달하십시오.
당신이 준 커밋 이후 모든 커밋 목록이있는 에디터가 나타납니다.
pick
에 대한 reword
(또는 망할 놈의 이전 버전에에 edit
) 당신이 수정하려는 커밋 앞에있다.reword 하려는 커밋마다 Git이 편집기로 다시 돌아갑니다. 편집 하려는 커밋마다 Git이 쉘에 드롭합니다. 껍질 안에 있다면 :
git commit --amend
git rebase --continue
이 순서의 대부분은 다양한 명령의 출력으로 설명됩니다. 그건 매우 쉬워요; 당신은 그것을 암기 할 필요가 없습니다 – 단지 git rebase --interactive
얼마나 오래 전에 커밋을 바로 잡을 수 있다는 것을 기억 하십시오.
이미 푸시 한 커밋은 변경하지 않을 것입니다. 또는 당신이 할 수도 있지만, 그 경우에는 커밋을 풀고 그 위에 작업을 한 모든 사람들과 의사 소통을하기 위해주의를 기울여야합니다. 누군가가 리베이스 또는 재설정을 게시 된 브랜치로 푸시 한 후 어떻게 복구 / 재 동기화합니까?
reword
대신 사용할 수 있습니다 pick
.
$parent_of_flawed_commit
와 같습니다 $flawed_commit^
.
-p
( --preserve-merges
)를 사용하십시오 .
이전 커밋을 수정하려면 원하는 변경을 수행하고 해당 변경을 준비한 다음 실행하십시오.
git commit --amend
그러면 새 커밋 메시지를 나타내는 파일이 텍스트 편집기에 열립니다. 이전 커밋 메시지의 텍스트로 채워집니다. 커밋 메시지를 원하는대로 변경 한 다음 파일을 저장하고 편집기를 종료하여 완료하십시오.
이전 커밋을 수정하고 동일한 로그 메시지를 유지하려면 다음을 실행하십시오.
git commit --amend -C HEAD
이전 커밋을 완전히 제거하여 수정하려면 다음을 실행하십시오.
git reset --hard HEAD^
둘 이상의 커밋 메시지를 편집하려면 다음을 실행하십시오.
git rebase -i HEAD~commit_count
commit_count 를 편집하려는 커밋 수로 바꿉니다 .이 명령은 편집기를 시작합니다. 첫 번째 커밋 (변경하려는 커밋)을 "pick"대신 "edit"로 표시 한 다음 편집기를 저장하고 종료하십시오. 커밋하려는 변경을 수행 한 다음 실행
git commit --amend
git rebase --continue
참고 : 편집기에서 "원하는대로 변경"을 할 수도 있습니다. git commit --amend
git rebase -i HEAD~commit_count
또한 선택한 많은 커밋의 커밋 메시지를 변경할 수 있습니다. 선택한 커밋을 "pick"대신 "reword"로 표시하십시오.
git reset --hard
커밋되지 않은 변경 사항을 소멸시킵니다. 교체하십시오 --hard
로 --soft
.
git reset --hard
는 완전히 합법적 인 명령이지만 질문이 오해의 소지가 있습니다. 당신은 사용 --hard
변경 내용을 저지른 경우에 당신이 당신이 오타를 만든 메시지를 저지하지 않을 경우, 버리고 싶어!
이미 언급했듯이 git commit --amend
마지막 커밋을 덮어 쓰는 방법입니다. 참고 사항 : 파일을 덮어 쓰 려면 명령은 다음과 같습니다.
git commit -a --amend -m "My new commit message"
git add file.ext
단지 다음git commit --amend
당신은 또한 git filter-branch
그것을 사용할 수 있습니다 .
git filter-branch -f --msg-filter "sed 's/errror/error/'" $flawed_commit..HEAD
사소한 것처럼 쉽지는 git commit --amend
않지만 잘못된 커밋 메시지 후에 이미 병합이있는 경우 특히 유용합니다.
이것은 커밋 과 결함 커밋 사이의 모든 커밋 을 다시 작성하려고 시도 HEAD
하므로 msg-filter
명령을 매우 현명하게 선택해야합니다. ;-)
$flawed_commit^..HEAD
하지 않습니다 $flawed_commit..HEAD
. 매뉴얼 페이지에 명시된 바와 같이 :« 명령은 명령 행에 언급 된 긍정적 참조 만 다시 작성합니다 (예 : a..b를 전달하면 b 만 다시 작성 됨). »
나는이 방법을 선호합니다 :
git commit --amend -c <commit ID>
그렇지 않으면 새로운 커밋 ID를 가진 새로운 커밋이 있습니다.
-c
몇 가지 작업을 수행합니다. 기본적으로 이전 메시지를 사용하지만 작성자 정보 (사람 및 시간)도 복사합니다. -C
메시지 편집을 요청하지 않는다는 점을 제외하고는 동일한 작업을 수행합니다.
fatal: Option -m cannot be combined with -c/-C/-F/--fixup.
Git GUI 도구를 사용하는 경우 Amend last commit 버튼 이 있습니다. 해당 버튼을 클릭하면 마지막 커밋 파일과 메시지가 표시됩니다. 해당 메시지를 편집하면 새 커밋 메시지로 커밋 할 수 있습니다.
또는 콘솔 / 터미널에서이 명령을 사용하십시오.
git commit -a --amend -m "My new commit message"
Git 리베이스 를 사용할 수 있습니다 . 예를 들어 bbc643cd를 커밋하도록 다시 수정하려면 다음을 실행하십시오.
$ git rebase bbc643cd^ --interactive
기본 편집기에서 커밋을 수정하려는 행에서 'pick'을 'edit'로 수정하십시오. 변경 한 다음
$ git add <filepattern>
이제 사용할 수 있습니다
$ git commit --amend
커밋을 수정 한 후
$ git rebase --continue
이전 헤드 커밋으로 돌아갑니다.
git commit --amend
하려면 사용할 수 git show
있으며 새 메시지가 표시됩니다.
마지막 커밋 메시지 만 수정하려면 다음을 수행하십시오.
git commit --amend
텍스트 편집기로 이동하여 마지막 커밋 메시지를 변경할 수 있습니다.
마지막 3 개의 커밋 메시지 또는 해당 시점까지의 커밋 메시지를 변경하려면 HEAD~3
다음 git rebase -i
명령을 제공하십시오.
git rebase -i HEAD~3
git commit --amend
하고, 그것은 또한 당신이 사용할 수 있다고 git rebase -i HEAD~commit_count
, 당신이 한 모든 플러그인이었다 3
에 대한이 commit_count
.
여러 분기에서 이전 커밋 메시지를 변경해야하는 경우 (즉, 잘못된 메시지가있는 커밋이 여러 분기에 존재하는 경우) 다음을 사용할 수 있습니다.
git filter-branch -f --msg-filter \
'sed "s/<old message>/<new message>/g"' -- --all
Git은에서 재 작성을 위해 임시 디렉토리를 생성하고 추가로 이전 참조를 백업 refs/original/
합니다.
-f
작업 실행을 강제합니다. 임시 디렉토리가 이미 있거나 아래에 이미 참조가 저장된 경우에 필요 refs/original
합니다. 그렇지 않은 경우이 플래그를 삭제할 수 있습니다.
--
필터 분기 옵션과 개정 옵션을 구분합니다.
--all
모든 브랜치 및 태그 를 다시 작성해야합니다.
이전 참조의 백업으로 인해 명령을 실행하기 전에 상태로 쉽게 돌아갈 수 있습니다.
마스터를 복구하고 지점에서 액세스하고 싶다고 가정 해보십시오 old_master
.
git checkout -b old_master refs/original/refs/heads/master
git commit --amend
주석을 수정하거나 내가 깜빡 파일을 추가 할 수 git add
있지만 지금까지 내가 한 전에 git push
에드. 또한 git filter-branch
버전 기록을 완전히 망쳐 놓고 싶지만 OP는 이것을 원하지 않으므로이 답변에는 큰 건강 경고가 필요합니다. 집에서 시도하지 마십시오.
사용하다
git commit --amend
그것을 자세히 이해하기 위해 훌륭한 게시물은 4. Git History를 다시 작성하는 것 입니다. 또한 사용하지 않을시기에 대해서도 설명 합니다git commit --amend
.
git commit --amend
당신이 당신을 작성하기 전에 대답은 이미 (여러 번) 부여했다. 왜 다시 게시 했습니까? "Git History Rewriting Git History"에 대한 링크를 추가하려면 기존 답변 중 하나를 편집하거나 주석을 남길 수 있습니다.
여기 몇 가지 옵션이 있습니다. 넌 할 수있어
git commit --amend
마지막 커밋 인 한
그렇지 않으면 마지막 커밋이 아닌 경우 대화식 리베이스를 수행 할 수 있습니다.
git rebase -i [branched_from] [hash before commit]
그런 다음 대화식 리베이스 내에서 해당 커밋에 편집을 추가하기 만하면됩니다. 이 온다 때, 작업을 수행 git commit --amend
하고,이 커밋 메시지를 수정합니다. 해당 커밋 지점 전에 롤백 git reflog
하려면 해당 커밋을 사용 하고 삭제할 수도 있습니다 . 그런 다음 git commit
다시 수행 하십시오.
마지막 커밋이라면 커밋을 수정 하십시오.
git commit --amend -o -m "New commit message"
( -o
( --only
) 플래그를 사용하여 커밋 메시지 만 변경하십시오)
묻힌 커밋 인 경우 멋진 대화 형 rebase를 사용하십시오 .
git rebase -i @~9 # Show the last 9 commits in a text editor
1, 당신이 원하는 변화를 커밋 찾기 pick
에 r
( reword
), 저장하고 파일을 닫습니다. 끝난!
미니어처 Vim 튜토리얼 (또는 8 번의 키 입력으로 리베이스하는 방법 3j
cw
r
EscZZ
) :
vimtutor
당신은 시간이 있다면 실행h
j
k
l
이동 키에 해당 ←↓↑→3j
3 줄 아래로 이동)i
삽입 모드로 들어가기 — 입력 한 텍스트가 파일에 나타납니다c
삽입 모드를 종료하고 "일반"모드로 돌아 가기u
실행 취소r
다시하기dd
, dw
, dl
각각 한 줄, 단어 나 문자를 삭제cc
, cw
, cl
같은 라인, 단어 또는 문자를 각각 (변경dd
i
)yy
, yw
, yl
각각 ( "홱 당김을")은 줄, 단어, 또는 편지를 복사합니다p
또는 P
현재 위치 이후 또는 현재 위치 앞에 붙여 넣기:w
Enter 파일을 저장 (쓰기):q!
Enter 저장하지 않고 종료:wq
Enter또는 ZZ
저장하고 종료텍스트를 많이 편집하는 경우 Dvorak 키보드 레이아웃으로 전환 하고 터치 방식을 배우고 Vim을 배우십시오. 노력할만한 가치가 있습니까? 예.
ProTip ™ : 기록을 다시 작성하는 "위험한"명령을 실험하는 것을 두려워하지 마십시오 * — Git은 기본적으로 90 일 동안 커밋을 삭제하지 않습니다. reflog에서 찾을 수 있습니다.
$ git reset @~3 # Go back three commits
$ git reflog
c4f708b HEAD@{0}: reset: moving to @~3
2c52489 HEAD@{1}: commit: more changes
4a5246d HEAD@{2}: commit: make important changes
e8571e4 HEAD@{3}: commit: make some changes
... earlier commits ...
$ git reset 2c52489
... and you're back where you started
* 같은 옵션을 조심 --hard
하고 --force
있지만 - 그들은 데이터를 삭제할 수 있습니다.
* 또한 공동 작업중인 지점의 기록을 다시 쓰지 마십시오.
nano
? 우리는 "최고의"텍스트 편집기에 대한 화염 전쟁을 일으키는 하드 코어 코딩이 아니라 텍스트 파일에 필요한 사소한 수정에 대해 이야기하고 있습니다.
ddjjpZZ
commit 2를 아래로 이동합니다. 기본적인 Vim 지식에 대해서는 아무것도 없습니다. 나노보다 Vim에 익숙해 지려면 10 분이 걸립니다.
나는 Git GUI 를 최대한 많이 사용한다. 그러면 마지막 커밋을 수정할 수있는 옵션이 제공된다.
또한 git rebase -i origin/master
항상 마스터 위에서 수행 한 커밋을 제공하고 수정, 삭제, 재정렬 또는 스쿼시 옵션을 제공하는 멋진 만트라입니다. 해시를 먼저 잡을 필요가 없습니다.
와우, 이렇게하는 많은 방법이 있습니다.
또 다른 방법은 마지막 커밋을 삭제하지만 변경 사항을 유지하여 작업을 잃지 않도록하는 것입니다. 그런 다음 수정 된 메시지로 다른 커밋을 수행 할 수 있습니다. 이것은 다음과 같습니다.
git reset --soft HEAD~1
git commit -m 'New and corrected commit message'
파일 추가 또는 변경을 잊어 버린 경우 항상이 작업을 수행합니다.
기억 지정하는 --soft
대신에 --hard
, 그렇지 않으면 당신은 완전히 커밋 잃게.
git commit --amend
2 단계 프로세스라는 점을 제외하고 는 정확히 동일한 작업을 수행합니다.
--amend
작성자 정보를 유지하지만 질문은 메시지 변경 만 요청합니다.
오래된 메시지 (예 : 최신 메시지가 아닌)를 편집하는 데 도움이되는 Windows / Mac GUI를 찾는 사람이라면 Sourcetree를 사용하는 것이 좋습니다 . 다음 단계는 다음과 같습니다.
아직 원격으로 푸시되지 않은 커밋의 경우 :
Unable to create 'project_path/.git/index.lock': File exists.
. 문제가 정확히 무엇인지 또는 향후 버전의 Sourcetree에서 수정 될지 확실하지 않지만,이 문제가 발생하면 한 번에 하나씩 재조정하는 것이 좋습니다 (느리지 만 더 안정적인 것 같습니다).... 또는 ... 이미 푸시 된 커밋의 경우 :
이 답변 의 단계를 따르십시오. 위와 비슷하지만 git push origin <branch> -f
분기를 강제 푸시하려면 명령 줄 ( ) 에서 추가 명령을 실행해야합니다 . 모든 내용을 읽고 필요한주의를 기울이는 것이 좋습니다!
최신 커밋을 편집하려면 다음을 사용하십시오.
git commit --amend
또는
git commit --amend -m 'one line message'
그러나 여러 커밋을 한 번에 편집하려면 대신 rebasing을 사용해야합니다.
git rebase -i <hash of one commit before the wrong commit>
위와 같은 파일 edit/e
에서 다른 옵션 중 하나를 쓰거나 저장하고 종료하십시오.
지금 당신은 첫 번째 잘못된 커밋에있을 것입니다. 파일을 변경하면 자동으로 준비됩니다. 유형
git commit --amend
저장하고 종료하고 입력하십시오.
git rebase --continue
모든 선택이 끝날 때까지 다음 선택으로 이동합니다.
이러한 사항은 특정 커밋 후에 모든 SHA 해시를 변경합니다.
마지막 메시지 만 변경하려면 다음 과 같이 --only
플래그 또는 바로 가기 -o
를 사용해야합니다 commit --amend
.
git commit --amend -o -m "New commit message"
이렇게하면 실수로 준비된 내용으로 커밋을 강화하지 않아도됩니다. 물론 적절한 $EDITOR
구성 을하는 것이 가장 좋습니다 . 그런 다음 -m
옵션을 그대로두고 Git은 커밋 메시지를 이전 메시지로 미리 채 웁니다. 이런 방식으로 쉽게 편집 할 수 있습니다.
git commit --amend
. 질문은 매우 구체적이어서 더 길었다! -o
플래그에 대한 결정적인 언급 은 아마도 나머지 정보에 묻혀있을 것입니다. 또한 이미 너무 많은 표를 얻은 답변을 편집하는 것이 불편합니다.
--only
with 옵션을 --amend
사용할 수는 있지만 1.7.11.3 ( ea2d4ed35902ce15959965ab86d80527731a177c ) 에서 수정 될 때까지 제대로 작동하지 않았습니다 . 따라서 2008 년에 올바른 답은 아마도 다음과 같았을 것입니다 git stash; git commit --amend; git stash pop
.
한 줄에 새로운 커밋 메시지로 마지막 잘못된 커밋 메시지를 업데이트하십시오.
git commit --amend -m "your new commit message"
또는 아래와 같이 Git 재설정을 시도하십시오.
# You can reset your head to n number of commit
# NOT a good idea for changing last commit message,
# but you can get an idea to split commit into multiple commits
git reset --soft HEAD^
# It will reset you last commit. Now, you
# can re-commit it with new commit message.
git reset
하나의 커밋을 여러 커밋으로 나누는 데 도움이 될 수 있습니다.
# Reset your head. I am resetting to last commits:
git reset --soft HEAD^
# (You can reset multiple commit by doing HEAD~2(no. of commits)
# Now, reset your head for splitting it to multiple commits
git reset HEAD
# Add and commit your files separately to make multiple commits: e.g
git add app/
git commit -m "add all files in app directory"
git add config/
git commit -m "add all files in config directory"
여기서 마지막 커밋을 두 개의 커밋으로 나누었습니다.
git commit --amend
, 정확하게는 말한다 방법처럼 상단이 대답을 투표 . 또한 이 이전 답변git reset --soft HEAD^
의 소프트 재설정과 동일하게 작동합니다. 둘 다 첫 번째 부모 커밋으로 재설정되기 때문입니다.
git reset
하나의 커밋 메시지를 여러 커밋 메시지로 나누는 아이디어를 제공하기 위해 솔루션 에 추가 하는 것을 귀찮게 합니다. , 나는 사용하기 시작했을 때 그 문제에 직면 해 있었기 때문에 git
. 때때로 이것은 정말 도움이 될 수 있습니다. :)
이 질문에는 많은 답변이 있지만 Vim을 사용하여 이전 커밋 메시지를 변경하는 방법에 대한 자세한 설명은 없습니다 . 나는 이것을 스스로하려고 노력하고 있었으므로 여기에 Vim에 경험이없는 사람들을 위해 이것을 어떻게했는지 자세히 기록 할 것입니다!
이미 서버에 푸시 한 5 개의 최신 커밋을 변경하고 싶었습니다. 다른 누군가가 이미 이것을 가져 갔다면 커밋 메시지를 변경하여 일을 망칠 수 있기 때문에 이것은 매우 위험합니다. 그러나, 당신이 당신의 자신의 작은 지점에서 작업하고 아무도 그것을 뽑아하지 않은 경우 다음과 같이 변경할 수 있습니다 :
5 개의 최신 커밋을 변경하고 터미널에 다음을 입력한다고 가정 해 보겠습니다.
git rebase -i HEAD~5
* 여기서 5는 변경하려는 커밋 메시지의 수입니다. 따라서 10 번째 커밋을 마지막 커밋으로 변경하려면 10을 입력하십시오.
이 명령을 사용하면 커밋 기록을 '편집'할 수있는 Vim으로 이동합니다. 마지막 5 개의 커밋은 다음과 같이 맨 위에 표시됩니다.
pick <commit hash> commit message
대신 pick
당신은 작성해야합니다 reword
. Vim에서 입력하여이 작업을 수행 할 수 있습니다 i
. 그것은 당신이에 갈 수 삽입 모드. ( 아래에 INSERT 라는 단어가 삽입 모드에 있다는 것을 알 수 있습니다 .) 커밋을 변경하려면 reword
대신에 입력하십시오.pick
.
그런 다음이 화면을 저장하고 종료해야합니다. 먼저 Esc버튼 을 눌러 '명령 모드' 로 이동하면됩니다 (하단에 INSERT 라는 단어 가 사라지면 명령 모드에 있는지 확인할 수 있습니다 ). 그런 다음을 입력하여 명령을 입력 할 수 있습니다 :
. 저장하고 종료하는 명령은 wq
입니다. 입력 :wq
하면 올바른 길을 가고 있습니다.
그런 다음 Vim은 변경하려는 모든 커밋 메시지를 처리하며 실제로 커밋 메시지를 변경할 수 있습니다. 삽입 모드, 커밋 메시지 변경, 명령 모드로 이동하여 저장하고 종료하면됩니다. 이 다섯 번하고 Vim을 벗어났습니다!
그런 다음 이미 잘못된 커밋을 푸시 한 경우 git push --force
덮어 쓰기해야합니다. 이는 git push --force
매우 위험한 일이므로, 잘못된 커밋을 푸시 한 후 서버에서 아무도 끌어 내지 마십시오!
이제 커밋 메시지를 변경했습니다!
(보시다시피, 나는 Vim에서 그 경험이 많지 않으므로 잘못된 'lingo'를 사용하여 무슨 일이 일어나고 있는지 설명하면 자유롭게 수정하십시오!)
<nitpick>
스택 오버플로에는 "스레드"가 없습니다. 토론 포럼이 아니기 때문에 "질문", "답변"및 "게시물"만 있습니다. </nitpick>
. 또한 모든 버전의 Vim이 같은 것은 아니며 삽입 모드에서 문자를 삭제할 수있는 것은 아닙니다 (어떻게 말이됩니까?). 당신이 원하는 경우 항상 빔의 문자를 삭제할 수, X
그리고 x
(작은 것을 할 것입니다 x
, 커서의 앞에 삭제 문자를 X
뒤에 삭제됩니다). 실수하면 u
반복해서 사용 하여 실행 취소 할 수 있습니다 . 마지막으로 대화식 rebase 편집기의 r
줄임말입니다 reword
.
cw
시작 부분에 입력됩니다 (질문은 vim에 관한 것이 아니지만 동의합니다).
nano
Midnight Commander의 mcedit 와 같이 깔끔하고 사용 하기 쉬운 것으로 설정할 수 있습니다 .
git-rebase-reword를 사용할 수 있습니다
커밋 (마지막이 아닌)을 다음과 같은 방식으로 편집하도록 설계되었습니다. commit --amend
$ git rebase-reword <commit-or-refname>
커밋을 수정하기 위해 "reword"커밋을 수정하기 위해 대화식 rebase 작업의 이름을 따서 명명되었습니다. 참조 이 게시물 과 사람 -section 대화 형 모드 -를
예 :
$ git rebase-reword b68f560
$ git rebase-reword HEAD^
g c; g rb -i @~9
, 새로운 내가 원하는 위치에 커밋 변화를 이동 (커밋 REBASE) commit
에 f
( fixup
), 및 저장합니다. 그것보다 빠른 것을 원한다면 별명을 지정할 수 있습니다 git commit --fixup=<commit>; git rebase -i --autosquash <commit>^
나는 오타로 커밋을 밀었다는 것을 깨달았습니다. 취소하기 위해 다음을 수행했습니다.
git commit --amend -m "T-1000, advanced prototype"
git push --force
경고 : 변경 사항을 강제로 누르면 원격 지점을 로컬 지점으로 덮어 씁니다. 보관하고 싶은 것을 덮어 쓰지 않도록하십시오. 또한 다른 사람이 나와 지사를 공유하는 경우 수정 된 (재 작성된) 커밋을 강제로 적용 할 때주의해야합니다. 방금 다시 쓴 커밋의 사본이 있으면 자신의 기록을 다시 작성해야하기 때문입니다.
나는 다음을 사용하고 싶다 :
git status
git add --all
git commit -am "message goes here about the change"
git pull <origin master>
git push <origin master>
코드를 원격 브랜치 ( GitHub / Bitbucket )로 푸시하지 않은 경우 다음 과 같이 명령 행에서 커밋 메시지를 변경할 수 있습니다.
git commit --amend -m "Your new message"
특정 지점에서 작업하는 경우 다음을 수행하십시오.
git commit --amend -m "BRANCH-NAME: new message"
이미 잘못된 메시지로 코드를 푸시 한 경우 메시지를 변경할 때주의해야합니다. 즉, 커밋 메시지를 변경하고 다시 푸시하면 문제가 발생합니다. 부드럽게하려면 다음 단계를 수행하십시오.
하기 전에 전체 답변을 읽으십시오.
git commit --amend -m "BRANCH-NAME : your new message"
git push -f origin BRANCH-NAME # Not a best practice. Read below why?
중요 사항 : 강제 푸시를 직접 사용하면 다른 개발자가 동일한 브랜치에서 작업중인 코드 문제가 발생할 수 있습니다. 따라서 이러한 충돌을 피하려면 강제 푸시 하기 전에 지점에서 코드를 가져와야합니다 .
git commit --amend -m "BRANCH-NAME : your new message"
git pull origin BRANCH-NAME
git push -f origin BRANCH-NAME
커밋 메시지가 이미 푸시 된 경우이를 변경하는 것이 가장 좋습니다.