Gitrebase --skip이 정확히 무엇을 합니까?
방금 했어요.git pull --rebase origin master
그리고 갈등이 있었습니다.
먼저, 이 충돌은 제가 건드리지 않은 파일에 있었고, 약 10개의 커밋이 되돌아왔습니다.왜 이런 일이 일어날까요?
그리고 나서 실수로 입력했습니다.git rebase --skip
그리고 그것은 '그 패치를 제거합니다'.
커밋을 건너뛴 것이 걱정되어 새 버전의 마스터 브랜치를 확인하고 기본 재배치한 브랜치와 새 마스터 브랜치 간에 차이를 냈습니다.차이에 표시되는 변경 사항은 최신 커밋이며 로그를 보면 '건너진' 패치가 커밋 기록에 표시됩니다.
여기서 무슨 일이 일어나고 있는지 설명할 수 있는 사람이 있습니까?
말하는 대로 행동하고, 약속을 건너뜁니다.실행하는 경우rebase --abort
나중에 동일한 기본 재배치 중에 충돌할 때 건너뛴 커밋도 당연히 되돌릴 것입니다.
업스트림에 변경사항이 이미 존재하는 경우 Git는 커밋을 적용할 수 없습니다(그러나 패치가 정확히 동일한 경우 일반적으로 자동으로 커밋을 건너뜁니다).사용자 자신의 커밋은 건너뛰지만 변경 사항은 이미 업스트림에 적용되었기 때문에 현재 HEAD에 여전히 존재합니다.
중요한 변경 사항을 제거하지 않았는지 정말 확인해야 합니다. ;) (reflog를 사용하여 리베이스 이전 상태로 돌아갑니다.)
갈등이 없어야 한다는 것을 알고 나열된 갈등이 말이 되지 않을 때 저는 종종 이것과 마주칩니다.예를 들어, 저는 다음과 같은 순서로 여러 개의 분기를 가지고 있었습니다.
A --> B --> C --> D --> E ...
D 지점의 수정 사항 중 하나는 파일을 추가하는 것이었고 저는 B 지점에서 파일을 추가하는 것이 더 말이 된다는 것을 깨달았습니다.그래서 했습니다.
git switch B
git checkout B -- path/to/new/file
git commit --amend --no-edit
그다음에 제가.
git switch C
git rebase B
이것은 잘 작동했지만, 내가 했을 때.
git switch D
git rebase C
충돌이 있었습니다.수동으로 고칠 수도 있었지만, 다른 방법으로 고칠 수도 있었습니다.
git rebase --skip
그리고 모든 것이 괜찮았습니다.그러면 제가 했을 때.
git switch E
git rebase D
동일한 충돌이 발생했습니다.다시, 수동으로 수정하거나 같은 결과로 건너뛸 수 있습니다.
저는 여전히 왜 이러한 갈등이 때때로 발생하는지 그리고 왜 그것이 때때로 효과가 있는지 이해하려고 노력하고 있습니다.
git rebase --skip
이런 경우에는
그것은 그 약속을 건너뜁니다.대화형 기본 재배치에서 커밋을 삭제하고 병합 충돌을 건너뛰면 해당 커밋이 제거됩니다.
^ eee pick
| ddd pick
| ccc drop
| bbb drop
| aaa pick
병합 충돌이 있는 경우 commit: ddd에 해당합니다.:git rebase --skip
git은 이렇게 말할 것입니다:could not apply ddd.
가지 모양은 다음과 같습니다.
^ eee
| aaa
참고:eee
실제로는 다른 커밋 ID로 다시 작성됩니다.
언급URL : https://stackoverflow.com/questions/9539067/what-exactly-does-git-rebase-skip-do
'programing' 카테고리의 다른 글
어떻게 Git 충돌을 yarn.lock에서 해결합니까? (0) | 2023.08.12 |
---|---|
최대 절전 모드에서 선택 및 카운트 쿼리를 실행하는 것보다 더 효율적으로 페이지를 작성하는 방법이 있습니까? (0) | 2023.08.12 |
매니페스트에 응용 프로그램 클래스를 등록하시겠습니까? (0) | 2023.08.12 |
access_token JWT에서 데이터를 추가하는 방법 (0) | 2023.08.07 |
대상 'x86_64-apple-ios-simulator'에 대한 모듈을 찾을 수 없습니다. (0) | 2023.08.07 |