git에서 많은 커밋을 스쿼시하는 쉬운 방법이 있습니까?

Pingger Shikkoken

다음과 같은 문제
가 있습니다. 스쿼시해야 할 커밋이 많이 있습니다 (수천 개에 달하는 스크립트가 있습니다). 이러한 커밋은 40에서 200 사이의 그룹에 있습니다. 너무 많은 노동이 필요하기 때문에
사용 git rebase -i이 불가능합니다. 우리는 (참조 해시로 실제 커밋을 얻는 데 사용할 수있는) 브랜치 HEAD에서 이러한 그룹의 상대적인 첫 번째와 마지막 커밋을 출력 할 수있는 도구를 가지고 있습니다.

예를 들어 HEAD ~ 400에서 HEAD ~ 200을 단일 커밋으로 스쿼시 할 수있는 것을 찾고 있습니다. 그런 다음 (인수 변경으로) 다시 실행하여 HEAD ~ 100에서 HEAD ~ 50을 다른 단일 커밋으로 스쿼시 할 수 있습니다.

편집 1 :
나는 rebase 파일을 변경함으로써 본질적으로 상호 작용 성을 위조하는 "가짜"편집기를 만드는 것에 대해 생각했습니다. 추상 예제 스크립트는 다음과 같습니다 (모든 그룹이 스쿼시 될 때까지 반복 할 수 있음).

start=$('get start of oldest group')
end=$('get end of oldest group')
git config core.editor "'~/fakeeditor' -start $start -end $end"
git rebase -i
시릴 퐁 비유

먼저 git rebase의 할일 목록을 조작하기위한 스크립트를 작성하십시오.

squash-it 파일:

#!/bin/sh
first=$(git rev-parse --short "$1")
last=$(git rev-parse --short "$2")
todo="$3"
lines=$(
sed -n "/^pick $first /,/^pick $last/{s/^pick/squash/p}" "$todo" | sed "1s/squash/pick/"
sed "/^pick $first /,/^pick $last/d" "$todo"
)
echo "$lines" > "$todo"

그런 다음이 스크립트를 다음과 같이 사용하십시오.

GIT_SEQUENCE_EDITOR='sh -c "./squash-it HEAD~100 HEAD~50 $1"' GIT_EDITOR=cat git rebase -i HEAD~100^

당신은 대체 할 수 squash와 함께 fixup당신이 원하는 거라면.

당신은 물론 대체하는 스크립트 자체에서이 라인을 생성 할 수 있습니다 HEAD~100그리고 HEAD~50당신은 예를 들어 루프에서 좋아하는과를.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

스쿼시로 리베이스하는 대신 마스터에서 기능 당 하나의 커밋을 얻는 쉬운 방법이 있습니까?

Git : 병합 커밋이있는 커밋을 스쿼시하는 방법은 무엇입니까?

많은 입력을 1로 만드는 더 쉬운 방법이 있습니까?

if 문없이 입력을 기반으로 즉석에서 많은 다른 개체를 인스턴스화하는 쉬운 방법이 있습니까?

Visual Studio에서 많은 클래스와 메서드에 주석을 추가하는 쉬운 방법이 있습니까?

Git에서 가능한 한 많은 커밋을 갖는 것이 낫습니까?

비대화 형으로 많은 커밋을 스쿼시하는 방법이 있습니까?

푸시 된 후 git에서 커밋을 스쿼시하는 방법은 무엇입니까?

7 푸시 커밋을 git에서 일대일로 스쿼시하는 방법은 무엇입니까?

r에서 dplyr::select()를 사용하지 않고 많은 수의 열을 주문하는 쉬운 방법이 있습니까?

실제로 병합 커밋 전에 두 개의 커밋을 스쿼시하는 방법은 무엇입니까?

인스턴스 생성 항목에 대한 많은 쿼리와 함께 bulk_create ()를 사용하는 더 쉬운 방법이 있습니까?

SQL을 사용하여 QT에서 많은 열이 있는 테이블을 만드는 가장 쉬운 방법은 무엇입니까?

추적되지 않은 git 파일을 삭제하는 쉬운 방법이 있습니까?

마지막 N 커밋을 git에서 단일 커밋으로 스쿼시하는 방법은 무엇입니까?

Pandas DataFrame에서 큰 문자열을 같은 수의 단어로 나누는 쉬운 방법이 있습니까?

Pandas DataFrame에서 열을 그룹화하는 쉬운 방법이 있습니까?

Java에서 String을 Inetaddress로 변환하는 쉬운 방법이 있습니까?

QtQuick에서 RowLayout을 복제하는 쉬운 방법이 있습니까?

Azure VM에서 파일을 복사하는 쉬운 방법이 있습니까?

iOS 13 음성 제어 손쉬운 사용 기능-손쉬운 사용 레이블에 연결하는 것보다 더 많은 사용자 지정 작업을 수행 할 수있는 방법이 있습니까?

React.JS에 DataTables와 같은 jQuery UI 플러그인을 포함하는 쉬운 방법이 있습니까?

git 로그에서 커밋을 이동하는 방법이 있습니까?

커밋을 이전 커밋에 병합하는 방법은 무엇입니까?

numpy에서 이것을 수행하는 쉬운 방법은 무엇입니까?

병합 커밋에서 분기 커밋을 찾는 방법이 있습니까?

Git에서 커밋을 그룹화하는 방법이 있습니까?

푸시 된 후 Bitbucket에서 커밋을 스쿼시하는 방법은 무엇입니까?

'SVN'에는 git처럼 커밋을 스쿼시하는 메커니즘이 있습니까?