이전 커밋을 여러 커밋으로 나누기


1223

지점을 만들지 않고 새 지점에서 펑키 작업을 많이 수행하지 않으면 로컬 저장소에 커밋 된 후 단일 커밋을 몇 가지 커밋으로 나눌 수 있습니까?


36
이 작업을 수행하는 방법을 배우기위한 좋은 소스 는 "커밋 나누기"섹션의 Pro Git §6.4 Git 도구-다시 쓰기 기록 입니다.

2
위의 의견에 연결된 문서는 우수하며 아래 답변보다 잘 설명되어 있습니다.
Blaisorblade

2
이 별칭을 사용하는 것이 좋습니다 stackoverflow.com/a/19267103/301717 . 다음을 사용하여 커밋을 분할 할 수 있습니다.git autorebase split COMMIT_ID
Jérôme Pouiller

대화식 리베이스없이 가장 쉬운 방법은 커밋을 시작하기 전에 커밋에서 시작하여 새 브랜치를 만들고, 커밋, 재설정, 숨김, 파일 이동 커밋, 숨김을 다시 적용하는 것입니다. 변경 사항을 커밋 한 다음 이전 브랜치와 병합하거나 후속 커밋을 선택하십시오. (그러면 이전 지점 이름을 현재 헤드로 전환합니다.) (MBO의 조언을 따르고 대화 형 리베이스를 수행하는 것이 좋습니다.) (2010 년 답변에서 복사 됨)
William Pursell

1
이전 커밋에서 리베이스하는 동안 실수로 두 커밋을 스쿼시 한 ​​후에이 문제가 발생했습니다. 이를 해결하기 위해 내 방법은 커밋 숙청, 체크 아웃했다 git reset HEAD~, git stash다음, git cherry-pick첫 번째 후, 스쿼시 내에서 커밋 git stash pop. 내 체리 픽 경우 여기 아주 특별한을하지만, git stashgit stash pop다른 사람을 위해 매우 편리합니다.
SOFe

답변:


1798

git rebase -i 할 것입니다.

먼저 깨끗한 작업 디렉토리로 시작하십시오. git status보류중인 수정, 삭제 또는 추가가 표시되지 않아야합니다.

이제 분할하려는 커밋을 결정해야합니다.

A) 가장 최근 커밋 나누기

가장 최근의 커밋을 분리하려면 먼저 :

$ git reset HEAD~

이제 평소와 같이 조각을 개별적으로 커밋하여 필요한만큼 커밋을 만듭니다.

B) 커밋을 더 멀리 나누기

이를 위해서는 rebasing , 즉 기록을 다시 작성 해야합니다 . 올바른 커밋을 찾으려면 몇 가지 선택 사항이 있습니다.

  • 다시 세 번 커밋했다면

    $ git rebase -i HEAD~3
    

    어디 3그것이 다시 얼마나 많은 커밋이다.

  • 당신이 계산하고 싶은 것보다 나무에서 더 멀리 있었다면

    $ git rebase -i 123abcd~
    

    123abcd분할하려는 커밋의 SHA1은 어디에 있습니까 ?

  • 마스터로 병합하려는 다른 지점 (예 : 기능 지점)에있는 경우 :

    $ git rebase -i master
    

리베이스 편집 화면이 나타나면 분리하려는 커밋을 찾으십시오. 그 라인의 시작 부분에서, 교체 pickedit( e짧은). 버퍼를 저장하고 종료하십시오. Rebase는 편집하려는 커밋 직후 중지됩니다. 그때:

$ git reset HEAD~

일반적인 방식으로 조각을 커밋하고 필요한만큼 커밋을 만든 다음

$ git rebase --continue

2
이 답변에 감사드립니다. 준비 영역에 이전에 커밋 된 파일을 갖고 싶었으므로 지침이 약간 다릅니다. 내가 할 수 전에 git rebase --continue, 나는 사실에 있었다 git add (files to be added), git commit다음 git stash(나머지 파일의 경우). 후 git rebase --continue, 내가 사용하는 git checkout stash .나머지 파일을 얻을
에릭 후에게

18
manojlds의 답변 에는 실제로 git-scm 문서에 대한 링크 가 있으며 커밋을 매우 명확하게 분리하는 프로세스를 설명합니다.

56
또한 덩어리의 일부만 커밋하기 위해 diff를 편집 git add -p하는 e옵션을 사용하여 파일의 부분 섹션 만 추가하는 것이 좋습니다. git stash일부 작업을 진행하지만 현재 커밋에서 제거하려는 경우에도 유용합니다.
Craig Ringer

2
커밋 을 분할 하고 다시 정렬하려면 먼저 분할 한 다음 다른 git rebase -i HEAD^3명령을 사용하여 별도로 재정렬하십시오 . 이렇게하면 분할이 나빠지면 많은 작업을 취소 할 필요가 없습니다.
David M. Lloyd

4
@kralyk HEAD에서 새로 커밋 된 파일은 이후 디스크에 남아 있습니다 git reset HEAD~. 그들은 길을 잃지 않습니다.
Wayne Conrad

312

에서 자식-REBASE의 매뉴얼 (분할 섹션 커밋)

대화식 모드에서 "edit"조치로 커미트를 표시 할 수 있습니다. 그러나 이것이 반드시 git rebase 가이 편집의 결과가 정확히 하나의 커밋 일 것으로 기대한다는 것을 의미하지는 않습니다. 실제로 커밋을 취소하거나 다른 커밋을 추가 할 수 있습니다. 커밋을 두 개로 나누는 데 사용할 수 있습니다.

  • 와 상호 작용하는 REBASE 시작 git rebase -i <commit>^, <commit>당신이 분할 할 커밋됩니다. 실제로, 해당 커밋이 포함되어있는 한 모든 커밋 범위가 수행됩니다.

  • "edit"조치로 분할하려는 커밋을 표시하십시오.

  • 커밋을 편집 할 때 실행하십시오 git reset HEAD^. 그 결과 HEAD가 1 개씩 되 감겨지고 인덱스가 적합합니다. 그러나 작업 트리는 동일하게 유지됩니다.

  • 이제 첫 번째 커밋에서 갖고 싶은 인덱스에 변경 사항을 추가하십시오. 당신은 사용할 수 있습니다 git add(가능한 대화 형) 또는 git gui(또는 둘 다) 그렇게 할 수 있습니다.

  • 현재 적절한 커밋 메시지로 현재 인덱스를 커밋하십시오.

  • 작업 트리가 깨끗해질 때까지 마지막 두 단계를 반복하십시오.

  • 로 리베이스를 계속하십시오 git rebase --continue.


12
Windows에서는 ~대신 대신 사용하십시오 ^.
Kevin Kuszyk

13
주의 사항 :이 접근법으로 커밋 메시지를 잃었습니다.
user420667

11
물론입니다. 우리는 reset메시지 포함 - 모든 후, 커밋 팅. 신중하게해야 할 일은 커밋을 나누려고하지만 메시지의 일부 / 전체를 유지하려는 경우 해당 메시지의 복사본을 만드는 것입니다. 따라서 ing git show이전에 커밋 rebase하거나 이것을 잊거나 선호하는 경우 나중에를 통해 커밋 하십시오 reflog. 실제로 2 주 내에 쓰레기를 수거 할 때까지 실제로 "잃어버린"것은 없습니다.
underscore_d

4
~그리고 ^심지어 윈도우에 여러 가지입니다. 당신은 여전히 ​​캐럿을 원하기 ^때문에 쉘에 따라 적절하게 탈출해야합니다. PowerShell에서는 HEAD`^입니다. cmd.exe를 사용하면 다음과 같이 두 번 탈출 할 수 있습니다 HEAD^^. 대부분의 (모두?) 쉘에서는 따옴표로 묶을 수 "HEAD^"있습니다.
AndrewF

7
당신은 또한 할 수 있습니다 git commit --reuse-message=abcd123. 짧은 옵션은 -C입니다.
j0057

41

사용 git rebase --interactive이전 커밋 실행 편집에 git reset HEAD~다음, 그리고 git add -p다음 몇 가지 더 추가 한 다음 커밋 할 몇 가지를 추가하고 다른 당신 같은 수만큼, 커밋 확인합니다. 완료되면를 실행 git rebase --continue하면 스택의 모든 분할 커밋이 이전에 시작됩니다.

중대한 : 당신은 항상 실행할 수 있기 때문에 당신은 오래된 변경을 잃어 버릴까 걱정에 놀러와 당신이 원하는 모든 변경 사항을 확인하지있을 수 있습니다 git reflog원하는 변경 사항이 포함되어 프로젝트의 지점을 찾기 위해, (현실을 부르 자 a8c4ab) 다음 git reset a8c4ab.

작동 방식을 보여주는 일련의 명령은 다음과 같습니다.

mkdir git-test; cd git-test; git init

이제 파일을 추가하십시오 A

vi A

이 줄을 추가하십시오 :

one

git commit -am one

그런 다음이 줄을 A에 추가하십시오.

two

git commit -am two

그런 다음이 줄을 A에 추가하십시오.

three

git commit -am three

이제 파일 A는 다음과 같습니다.

one
two
three

그리고 우리 git log 는 다음과 같이 보입니다.git log --pretty=oneline --pretty="%h %cn %cr ---- %s"

bfb8e46 Rose Perrone 4 seconds ago ---- three
2b613bc Rose Perrone 14 seconds ago ---- two
9aac58f Rose Perrone 24 seconds ago ---- one

두 번째 커밋을 나누고 싶다고 가정 해 봅시다. two .

git rebase --interactive HEAD~2

다음과 같은 메시지가 나타납니다.

pick 2b613bc two
pick bfb8e46 three

커밋을 편집하려면 첫 번째 pick를로 변경하십시오 e.

git reset HEAD~

git diff 우리는 두 번째 커밋에 대해 커밋을 단계적으로 해제했음을 보여줍니다.

diff --git a/A b/A
index 5626abf..814f4a4 100644
--- a/A
+++ b/A
@@ -1 +1,2 @@
 one
+two

변경 사항을 준비하고 file의 해당 줄에 "및 세 번째"를 추가합시다 A.

git add .

이것은 보통 대화식 rebase 동안 실행할 시점입니다 git rebase --continue. 왜냐하면 보통 커밋 스택으로 돌아가서 이전 커밋을 편집하기 때문입니다. 그러나 이번에는 새로운 커밋을 만들고 싶습니다. 그래서 우리는 실행할 것 git commit -am 'two and a third'입니다. 이제 파일을 편집 A하고 행을 추가합니다 two and two thirds.

git add . git commit -am 'two and two thirds' git rebase --continue

커밋과 충돌이 three있으므로 해결해 보겠습니다.

우리는 변할거야

one
<<<<<<< HEAD
two and a third
two and two thirds
=======
two
three
>>>>>>> bfb8e46... three

one
two and a third
two and two thirds
three

git add .; git rebase --continue

이제 우리 git log -p는 다음과 같이 보입니다 :

commit e59ca35bae8360439823d66d459238779e5b4892
Author: Rose Perrone <roseperrone@fake.com>
Date:   Sun Jul 7 13:57:00 2013 -0700

    three

diff --git a/A b/A
index 5aef867..dd8fb63 100644
--- a/A
+++ b/A
@@ -1,3 +1,4 @@
 one
 two and a third
 two and two thirds
+three

commit 4a283ba9bf83ef664541b467acdd0bb4d770ab8e
Author: Rose Perrone <roseperrone@fake.com>
Date:   Sun Jul 7 14:07:07 2013 -0700

    two and two thirds

diff --git a/A b/A
index 575010a..5aef867 100644
--- a/A
+++ b/A
@@ -1,2 +1,3 @@
 one
 two and a third
+two and two thirds

commit 704d323ca1bc7c45ed8b1714d924adcdc83dfa44
Author: Rose Perrone <roseperrone@fake.com>
Date:   Sun Jul 7 14:06:40 2013 -0700

    two and a third

diff --git a/A b/A
index 5626abf..575010a 100644
--- a/A
+++ b/A
@@ -1 +1,2 @@
 one
+two and a third

commit 9aac58f3893488ec643fecab3c85f5a2f481586f
Author: Rose Perrone <roseperrone@fake.com>
Date:   Sun Jul 7 13:56:40 2013 -0700

    one

diff --git a/A b/A
new file mode 100644
index 0000000..5626abf
--- /dev/null
+++ b/A
@@ -0,0 +1 @@
+one

38

이전 답변에서는 git rebase -i분할하려는 커밋을 편집하고 커밋하는 부분 을 다루었습니다 .

이것은 파일을 다른 커밋으로 분할 할 때 잘 작동하지만 개별 파일의 변경 사항을 나누려면 더 알아야 할 것이 있습니다.

를 사용 rebase -i하고 표시하기 위해 커밋하려는 커밋에 edit두 가지 옵션이 있습니다.

  1. 를 사용한 후 각 커밋에서 원하는 git reset HEAD~패치 git add -p를 선택하기 위해 개별적으로 패치를 사용 하십시오.

  2. 작업 사본을 편집하여 원하지 않는 변경 사항을 제거하십시오. 그 중간 상태를 저 지르십시오. 그리고 다음 라운드에 대한 전체 커밋을 취소하십시오.

옵션 2는 임시 커밋을 분할 할 때 유용합니다. 이는 중간 버전이 병합의 일부로 올바르게 빌드되고 실행되는지 확인할 수 있기 때문입니다. 이것은 다음과 같이 진행됩니다.

커밋을 사용 rebase -i하고 사용한 후에 edit

git reset --soft HEAD~

커밋을 취소하지만 커밋 된 파일을 인덱스에 그대로 둡니다. 초기 커밋이 최종 결과에 얼마나 가까운 지에 따라 --soft를 생략하여 혼합 재설정을 수행 할 수도 있습니다. 유일한 차이점은 모든 변경 사항을 단계별로 시작하는지 또는 모든 단계를 거치지 않은 상태로 시작하는 것입니다.

이제 코드를 편집하십시오. 변경 사항을 제거하고 추가 된 파일을 삭제하며 원하는 시리즈의 첫 번째 커밋을 구성하려는 모든 작업을 수행 할 수 있습니다. 또한 빌드하고 실행하며 일관된 소스 세트가 있는지 확인할 수 있습니다.

행복하면 파일을 필요에 따라 준비 / 언 스테이지하고 ( git gui이 용도로 사용 하고 싶습니다 ) UI 또는 명령 줄을 통해 변경 사항을 커밋합니다.

git commit

이것이 첫 번째 커밋입니다. 이제 작업 사본을 분할 한 커밋 이후의 상태로 복원하여 다음 커밋에 대해 더 많은 변경 사항을 적용 할 수 있습니다. 편집중인 커밋의 sha1을 찾으려면을 사용하십시오 git status. 상태의 처음 몇 줄에는 현재 실행중인 rebase 명령이 표시되어 원래 커밋의 sha1을 찾을 수 있습니다.

$ git status
interactive rebase in progress; onto be83b41
Last commands done (3 commands done):
   pick 4847406 US135756: add debugging to the file download code
   e 65dfb6a US135756: write data and download from remote
  (see more in file .git/rebase-merge/done)
...

이 경우 편집중인 커밋에는 sha1이 65dfb6a있습니다. 이를 알면 git checkout커밋과 파일 위치를 모두 사용하는 형식을 사용하여 작업 디렉토리에서 커밋 내용을 확인할 수 있습니다. 여기 .에서 전체 작업 복사본을 대체 할 파일 위치로 사용 합니다.

git checkout 65dfb6a .

끝에 점을 놓치지 마세요!

이렇게하면 편집중인 커밋 이후의 파일을 체크 아웃하고 준비하지만 이전 커밋과 관련이 있으므로 이미 커밋 한 변경 내용은 커밋에 포함되지 않습니다.

이제 다른 분할 커밋을 만들기 전에 커밋의 일부를 삭제하고 분할을 마치기 위해 그대로 커밋하거나 다시 돌아갈 수 있습니다.

하나 이상의 커밋에 원래 커밋 메시지를 재사용하려면 rebase의 작업 파일에서 바로 사용할 수 있습니다.

git commit --file .git/rebase-merge/message

마지막으로 모든 변경 사항을 커밋하면

git rebase --continue

리베이스 작업을 수행하고 완료합니다.


3
감사합니다!!! 이것이 정답입니다. 오늘 많은 시간과 고통을 덜었을 것입니다. 최종 커밋 결과가 편집중인 커밋과 동일한 상태가되는 유일한 대답입니다.
Doug Coburn

1
원본 커밋 메시지를 사용하는 방식이 마음에 듭니다.
Salamandar

옵션 2를 사용 git checkout *Sha I'm Editing* .하면 항상 할 때 Updated 0 paths from *Some Sha That's Not In Git Log*변경하지 않습니다.
누 메논

18

git rebase --interactive커밋을 더 작은 커밋으로 분할하는 데 사용할 수 있습니다. rebaseGit 문서는 프로세스를 간략하게 설명합니다-커밋 분할 :

대화식 모드에서 "edit"조치로 커미트를 표시 할 수 있습니다. 그러나 git rebase이것이 반드시이 편집 결과가 정확히 하나의 커밋이 될 것으로 예상하는 것은 아닙니다 . 실제로 커밋을 취소하거나 다른 커밋을 추가 할 수 있습니다. 커밋을 두 개로 나누는 데 사용할 수 있습니다.

  • 와 상호 작용하는 REBASE 시작 git rebase -i <commit>^, <commit>당신이 분할 할 커밋됩니다. 실제로, 해당 커밋이 포함되어있는 한 모든 커밋 범위가 수행됩니다.

  • "edit"조치로 분할하려는 커밋을 표시하십시오.

  • 커밋을 편집 할 때 실행하십시오 git reset HEAD^. 그 결과 HEAD가 1 개씩 되 감겨지고 인덱스가 적합합니다. 그러나 작업 트리는 동일하게 유지됩니다.

  • 이제 첫 번째 커밋에서 갖고 싶은 인덱스에 변경 사항을 추가하십시오. 당신은 사용할 수 있습니다 git add(가능한 대화 형) 또는 자식 GUI (또는 둘 다) 그렇게 할 수 있습니다.

  • 현재 적절한 커밋 메시지로 현재 인덱스를 커밋하십시오.

  • 작업 트리가 깨끗해질 때까지 마지막 두 단계를 반복하십시오.

  • 로 리베이스를 계속하십시오 git rebase --continue.

중간 개정판이 일관성이 있는지 확실하지 않은 경우 (컴파일, 테스트 슈트 등을 전달) git stash각 커밋, 테스트 및 수정이 필요한 경우 커밋을 수정 한 후에 아직 커밋되지 않은 변경 사항을 제거하는 데 사용해야합니다. .


Windows에서는 ^명령 행의 이스케이프 문자를 기억하십시오 . 두 배가되어야합니다. 예를 들어 git reset HEAD^^대신 발행하십시오 git reset HEAD^.
Frédéric

@ Frédéric : s 나는 결코 이것에 부딪치지 않았다. 적어도 PowerShell에서는 그렇지 않습니다. 그런 다음 ^두 번 사용 하면 현재 HEAD 위의 두 커밋이 재설정됩니다.
Farway

@Farway, 고전적인 명령 행에서 사용해보십시오. PowerShell은 또 다른 짐승이며 탈출 문자는 백 틸트입니다.
Frédéric

요약하면 : "HEAD^"cmd.exe 또는 PowerShell, HEAD^^cmd.exe, HEAD`^PowerShell에서. 쉘과 특정 쉘이 작동하는 방법 (즉, 명령이 프로그램에 전달되는 개별 부분으로 전환되는 방법)에 대해 배우면 온라인으로 특정 쉘에 적합한 문자로 명령을 조정할 수 있습니다. (Windows에만 해당되지 않음)
AndrewF

11

이제 Windows의 최신 TortoiseGit에서 매우 쉽게 할 수 있습니다.

rebase 대화 상자를 열고 구성한 후 다음 단계를 수행하십시오.

  • 분할하려는 커밋을 마우스 오른쪽 단추로 클릭하고 " Edit"(픽, 스쿼시, 삭제 중)를 선택하십시오.
  • " Start"을 (를) 클릭 하여 리베이스를 시작 하십시오 .
  • 분할 커밋에 도달하면 " Edit/Split"버튼을 확인하고 " Amend"를 직접 클릭하십시오 . 커밋 대화 상자가 열립니다.
    커밋 편집 / 분할
  • 별도의 커밋에 넣을 파일을 선택 해제하십시오.
  • 커밋 메시지를 편집 한 다음 "commit " .
  • 커밋 할 파일이있을 때까지 커밋 대화 상자가 계속해서 열립니다. 커밋 할 파일이 더 이상 없어도 커밋을 하나 더 추가할지 묻는 메시지가 계속 표시됩니다.

TortoiseGit에게 감사드립니다!



8

또한 있습니다 git reset --soft HEAD^. git reset(기본값은 --mixed) 과 비슷 하지만 인덱스 내용을 유지합니다. 따라서 파일을 추가 / 제거한 경우 이미 색인에 파일이 있습니다.

거대한 커밋의 경우 매우 유용합니다.


3

IntelliJ IDEA , PyCharm , PhpStorm 등에서 하나의 커밋을 분할하는 방법은 다음과 같습니다.

  1. 버전 관리 로그 창에서 분할하려는 커밋을 선택하고 마우스 오른쪽 버튼을 클릭 한 다음 Interactively Rebase from Here

  2. 분할하려는 것을 표시하고를 edit클릭하십시오.Start Rebasing

  3. HEAD가 해당 커밋으로 설정되어 있음을 의미하는 노란색 태그가 표시됩니다. 커밋을 마우스 오른쪽 버튼으로 클릭하고Undo Commit

  4. 이제 커밋이 다시 스테이징 영역으로 돌아간 다음 별도로 커밋 할 수 있습니다. 모든 변경 사항이 커밋되면 이전 커밋이 비활성화됩니다.


2

대화식 리베이스없이 가장 쉬운 방법은 커밋을 시작하기 전에 커밋에서 시작하여 새 브랜치를 만들고, 커밋, 재설정, 숨김, 파일 이동 커밋, 숨김을 다시 적용하는 것입니다. 변경 사항을 커밋 한 다음 이전 브랜치와 병합하거나 후속 커밋을 선택하십시오. (이전 지점 이름을 현재 헤드로 전환하십시오.) MBO의 조언을 따르고 대화식 리베이스를 수행하는 것이 좋습니다.


요즘의 SO 표준에 따르면 이것은 대답이 아닌 자격을 갖추어야한다. 그러나 이것은 여전히 ​​다른 사람들에게 도움이 될 수 있으므로, 마음에 들지 않으면 원래 게시물의 의견으로 이동하십시오
YakovL

@YakovL 합리적인 것 같습니다. 최소한의 행동으로 교장의 답변을 삭제하지는 않지만 다른 사람의 경우에는 반대하지 않습니다.
William Pursell 2016 년

이것은 모든 rebase -i제안 보다 훨씬 쉽습니다 . 그래도 형식이 없기 때문에 많은 주목을받지 못했다고 생각합니다. 어쩌면 당신은 그것을 검토 할 수 있습니다. 이제 당신은 126k 포인트를 가지고 있으며 아마도 SO 방법을 알고 있습니다. ;)
erikbwork 8


1

이것이 있다면 :

A - B <- mybranch

커밋 B에서 일부 내용을 커밋 한 경우 :

/modules/a/file1
/modules/a/file2
/modules/b/file3
/modules/b/file4

그러나 B를 C-D로 나누고이 결과를 얻으려고합니다.

A - C - D <-mybranch

예를 들어 (다른 커밋의 다른 디렉토리의 내용)과 같은 내용을 나눌 수 있습니다 ...

분기하기 전에 커밋으로 다시 분기를 재설정하십시오.

git checkout mybranch
git reset --hard A

첫 번째 커밋 만들기 (C) :

git checkout B /modules/a
git add -u
git commit -m "content of /modules/a"

두 번째 커밋 (D) 만들기 :

git checkout B /modules/b
git add -u
git commit -m "content of /modules/b"

B보다 커밋이 있으면 어떻게 되나요?
CoolMind

1

8 년이 넘었지만 어쨌든 누군가 도움이 될 것입니다. 나는없이 트릭을 할 수 있었다 rebase -i. 아이디어는 git을 이전과 동일한 상태로 만드는 것입니다 git commit.

# first rewind back (mind the dot,
# though it can be any valid path,
# for instance if you want to apply only a subset of the commit)
git reset --hard <previous-commit> .

# apply the changes
git checkout <commit-you-want-to-split>

# we're almost there, but the changes are in the index at the moment,
# hence one more step (exactly as git gently suggests):
# (use "git reset HEAD <file>..." to unstage)
git reset

이 후에 Unstaged changes after reset:는 반짝이고 레포가 모든 파일을 커밋하려는 상태에 있습니다. 이제부터 평소처럼 쉽게 다시 커밋 할 수 있습니다. 도움이 되길 바랍니다.


0

기본적으로해야 할 일을 알고 있지만 항상 올바른 구문을 잊어 버리기 때문에 필요한 명령에 대한 빠른 참조 :

git rebase -i <sha1_before_split>
# mark the targeted commit with 'edit'
git reset HEAD^
git add ...
git commit -m "First part"
git add ...
git commit -m "Second part"
git rebase --continue

Emmanuel Bernard의 블로그 게시물에 대한 크레딧 .

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