2017-12-08 2 views
0

100 개의 파일을 변경 한 커밋이 있습니다. 그 커밋을 100 커밋으로 나눠서 하나의 커밋으로 파일명으로 나누고 싶습니다.수동으로 모든 파일을 거치지 않고 하나의 커밋을 여러 커밋으로 분할합니다.

현재 내가 수행 할 내용은 ereset HEAD^1으로 편집하려는 커밋 뒤에 git add && git commit -m <filename>으로 표시됩니다. 여러 파일로 인해 지루해집니다.

바람직하게 스크립트가없는 bash의 한 행. 또한 암기하기에 충분히 읽을 수 있어야합니다.


업데이트 :는 마지막 커밋되어 있다고 가정하고,이 ID가 abc123 확약

git reset HEAD^ --soft 
git diff --cached --name-only --relative | while read f; do git commit -m "$f" -- "$f"; done 
+0

파일 이름이 주어지면 하나의 커밋을 만드는 규칙은 무엇입니까? 파일 당 커밋 하나? – ElpieKay

+0

예, 파일 당 하나의 확약. – Jaakko

+0

커밋 메시지는 어떻습니까? 모두 똑같습니까? – ElpieKay

답변

0

와 ElpieKay의 솔루션을 사용하여 종료.

복원 할 git reset abc123 --hard을 실행

git reset abc123 --hard 
git reset abc123^ --soft 
git diff --cached --name-only | while read f;do git commit -m "$f" -- "$f";done 

아무것도 잘못되면

을보십시오.

+0

잘못된 명령이 사용되었으므로 업데이트되었습니다. – ElpieKay

+0

나는 git 루트에 있지는 않지만'git diff --cached --name-only -relative'로 해결할 수 있다고 생각합니다. '--relative' 수정 후, 그것은 내가 원하는 것을 읽기 쉽도록 해줍니다. 고맙습니다! – Jaakko

+0

나는'git reset abc123 --hard'를 사용하지 않았습니다. 그리고 아마도'자식 재설정 HEAD^--soft'는 좀 더 일반적인 해결책일까요? – Jaakko

관련 문제