진행중인 git rebase가 있는지 확인하는 방법은 무엇입니까?
를 시작할 때 , 또는 git rebase -i
같은 명령을 실행할 수 있습니다 . 이러한 명령은 rebase가 진행중인 경우에만 작동합니다.git rebase --continue
git rebase --abort
진행중인 리베이스가 있는지 어떻게 알 수 있습니까?
(내부적으로 리베이스가 어떻게 작동하는지에 대한 세부 사항에 대해 매우 감사하겠습니다. git은 "rebase in progress"상태를 제공하는 리포지토리에 어떤 작업을 수행합니까?)
우선, 이ORIG_HEAD
REBASE 동안 장소에 (하지만이 REBASE 명령에 제한되지 않는다)
그러나 2010 Git 1.7.0 git-rebase.sh
스크립트 자체를 살펴볼 수도 있습니다 (;).
이와 같은 줄은 또 다른 단서를 줄 수 있습니다.
dotest="$GIT_DIR"/rebase-merge
test -d "$dotest" -o -d "$GIT_DIR"/rebase-apply || die "No rebase in progress?"
- 폴더
rebase-apply
에rebase
, - 그러나 폴더
rebase-merge
는rebase -i
.
코딩 지침은
-o
(참조Documentation/CodingGuidelines
) 의 사용을 권장하지 않으므로 현재 올바른 방법 (2017 년부터 2011 년부터 Git 1.7.6) 은 다음과 같습니다.
(test -d ".git/rebase-merge" || test -d ".git/rebase-apply") || die "No rebase in progress?"
(test -d "$(git rev-parse --git-path rebase-merge)" || \
test -d "$(git rev-parse --git-path rebase-apply)" )
이것은 작업 트리
.git
와 디렉토리 가없는 비정상적이거나 비표준 레이아웃을 올바르게 처리 하고 작업 디렉토리의 하위 디렉토리에서이 테스트를 실행할 수 있도록합니다.
그 이유는 git rev-parse --git-path <path>
:가 " $GIT_DIR/<path>
"을 (를) 해결 하기 때문 입니다.
Git 2.6 이상 (2015 년 3 분기)은 리베이스 중에 더 많은 정보를 인쇄합니다.
참조 592e412 커밋 , 84e6fb9 커밋 (2015 7월 6일)를 84e6fb9 커밋 (2015 년 7 월 06), 및 df25e94 커밋 , 05eb563 커밋 에 의해 (2015 6월 30일) 기욤 페이지 ( gitster
) .
(Merged by Junio C gitster
Hamano -- in commit 178d2c7 , 03 Aug 2015)
status
: 더 많은 정보 제공rebase -i
git status
는rebase -i
rebase 중에 수행되는 명령 목록에 대한 자세한 정보를 제공합니다 .
다음을 표시합니다.
- 실행 된 마지막 두 명령 및
- 실행할 다음 두 줄.
또한
.git
디렉토리 에서 전체 파일을 찾을 수있는 힌트를 제공합니다 .
git-aware bash 프롬프트에 사용할 수있는 __git_ps1
함수에서contrib/completion/git-prompt.sh
이러한 감지가 수행되는 방법을 확인할 수도 있습니다.
if [ -f "$g/rebase-merge/interactive" ]; then
r="|REBASE-i"
b="$(cat "$g/rebase-merge/head-name")"
elif [ -d "$g/rebase-merge" ]; then
r="|REBASE-m"
b="$(cat "$g/rebase-merge/head-name")"
else
if [ -d "$g/rebase-apply" ]; then
if [ -f "$g/rebase-apply/rebasing" ]; then
r="|REBASE"
elif [ -f "$g/rebase-apply/applying" ]; then
r="|AM"
else
r="|AM/REBASE"
fi
당신이있는 경우 EasyGit을 , eg status
당신을 말할 것이다 :
$ eg status
(Not currently on any branch.)
(YOU ARE IN THE MIDDLE OF A INTERACTIVE REBASE; RUN 'eg help topic middle-of-rebase' FOR MORE INFO.)
Changes ready to be committed ("staged"):
modified: .gitmodules
renamed: config_loader.rb -> code/config_loader.rb
Newly created unknown files:
vendor/
(YOU ARE IN THE MIDDLE OF A INTERACTIVE REBASE; RUN 'eg help topic middle-of-rebase' FOR MORE INFO.)
컬러 터미널에서는 알림이 매우 눈에 띄게 표시됩니다.
( eg help topic middle-of-rebase
“ 불완전한 rebase를 해결하거나 중단하는 방법 ”설명서를 표시합니다 .)
진행중인 대화 형 리베이스가있는 경우 진행중인 위치를 알려줍니다.
$ cat .git/rebase-merge/done
pick 786139e lrg
edit 668b8a6 ktio
$
지금은 인터랙티브 리베이스에서 "ktio"패치를 편집하고 있습니다.
진행중인 리베이스가 없으면 다음과 같이 표시됩니다.
$ cat .git/rebase-merge/done
cat: .git/rebase-merge/done: No such file or directory
$
bash 명령 줄에서 :
ls `git rev-parse --git-dir` | grep rebase
rebase 폴더가 있으면 종료 코드 0 (성공)을 반환하고 rebase 폴더를 STDOUT에 출력합니다. 리베이스 중에 있지 않으면 아무것도 출력하지 않고 0이 아닌 종료 코드를 반환합니다. 따라서 다음과 같이 할 수도 있습니다.
ls `git rev-parse --git-dir` | grep rebase || echo no rebase
이 명령을 사용하고 있습니다 is_rebase=$(git status | grep "rebasing" | wc -l)
참고 URL : https://stackoverflow.com/questions/3921409/how-to-know-if-there-is-a-git-rebase-in-progress
'code' 카테고리의 다른 글
커플 링, 응집력 및 데메테르의 법칙 (0) | 2020.11.25 |
---|---|
Java 및 일반적으로 로그인 : 모범 사례? (0) | 2020.11.25 |
"UTF-8 인코딩에 매핑 할 수없는 문자"오류 (0) | 2020.11.25 |
Hibernate + Spring을 사용한 캐싱-몇 가지 질문 (0) | 2020.11.25 |
NLTK에서 구문 분석을위한 영어 문법 (0) | 2020.11.25 |