2011-08-17 2 views

답변

7

예. 멘 페이지 git filter-branch은 기성품 예제를 제공합니다 : 이것은 작업 트리에서 "Darl McBribe"의 모든 커밋을 제거합니다 (귀하의 경우 이것은 User1입니다). 당신의 repo의 역사를 변경할 때 항상,

skip_commit() 
{ 
    shift; 
    while [ -n "$1" ]; 
    do 
      shift; 
      map "$1"; 
      shift; 
    done; 
} 

을 :하지만 당신이 he'll be in trouble를 수정하기 전에 누군가의 repo에서 가져온 경우 기능 skip_commit는 다음과 같이 정의된다

git filter-branch --commit-filter ' 
    if [ "$GIT_AUTHOR_NAME" = "Darl McBribe" ]; 
    then 
      skip_commit "[email protected]"; 
    else 
      git commit-tree "[email protected]"; 
    fi' HEAD 

.

2

예, git filter-branch으로이 작업을 수행 할 수 있지만이 작업을 수행 할 때 고려해야합니다. 특히 다른 커밋이 제거되어야하는 사용자의 커밋을 기반으로하는 경우.

필터링해야하는 커밋이 거의없는 경우에는 cherry pick 및 rebase를 사용해야합니다.

관련 문제