programing

체크아웃 없이 다른 분기를 현재 상태로 재설정

css3 2023. 9. 7. 21:57

체크아웃 없이 다른 분기를 현재 상태로 재설정

Git 워크플로우를 위한 스크립트를 작성하고 있습니다.

체크아웃을 하지 않고 다른 지점을 현재 지점으로 리셋해야 합니다.

이전:

 CurrentBranch: commit A
 OtherBranch: commit B

이후:

 CurrentBranch: commit A
 OtherBranch: commit A

동치

 $ git checkout otherbranch 
 $ git reset --soft currentbranch
 $ git checkout currentbranch

(참고--soft: 작업 트리에 영향을 주고 싶지 않습니다.)

가능한가요?

세트otherbranch과 같은 약속을 가리키다currentbranch달리다

git branch -f otherbranch currentbranch

-f(힘) 옵션이 말해줍니다.git branch 네, 저는 정말로 모든 기존 참조를 새 참조로 덮어쓰려고 합니다.

설명서에서:

-f
--force

이미 있는 경우로 재설정합니다.Without -fit 분기는 기존 분기 변경을 거부합니다.

설명하는 워크플로우는 다음과 동일하지 않습니다.reset --hard작업 트리의 모든 변경 사항을 잃게 됩니다(작업을 수행할 수 있음).reset --soft).

당신에게 필요한 것은

git update-ref refs/heads/OtherBranch refs/heads/CurrentBranch

언제든지 분기를 이 명령과 동기화할 수 있습니다.

$ git push . CurrentBranch:OtherBranch -f

또한 -fit 없이 이 명령 집합을 바꿉니다.

$ git checkout OtherBranch
$ git merge CurrentBranch
$ git checkout CurrentBranch

현재 분기에서 모든 파일을 커밋할 필요가 없어서 다른 분기로 전환할 수 없을 때 유용할 수 있습니다.

다른 대답들은 좋지만 조금 무섭습니다.저는 단지 제가 매일 사용하는 명령어의 변형으로 요구했던 것을 정확히 달성하기 위한 또 다른 옵션을 제공할 뿐입니다.

간단히 말해, 이 옵션들 중 어떤 것도 현재의 분기나 현재의 헤드를 망치지 않습니다.

git branch -C other_branch(현재 HEAD에서 other_branch 강제 생성)

사용자가 아닌 분기로 other_branch를 재설정하려면...

git branch -C old_branch other_branch(orce-create other_graphics를 old_graphics에서 강제 생성)

원격에서 other_branch를 some_branch로 재설정하려면 조금 다릅니다...

git pull -f origin old_branch:other_branch(이미 최신 상태를 무시하는 force-limit) origin/old_limit을 local의 other_limit에 적용)

git branch -f업스트림 브랜치 정보 등을 파괴합니다.입력하기git update-ref기본적으로 깨끗하게 작동하는 명령어는 지루하고 오류가 발생하기 쉽습니다.그것은 아래에서 어떤 종류의 말도 안 되는 파일을 만들 수 있습니다..git.

이 작업은 자주 필요하므로 안전한 별칭이나 스크립트를 통해 수행합니다.

git reset-other OTHERBRANCHNAME TARGETREF

구성에 이 별칭을 추가한 후:

[alias]
    reset-other = "!f() { git show -s refs/heads/$1 -- && git update-ref refs/heads/$1 $2 && git show -s $1; }; f"

명령줄에서 추가:

git config --global alias.reset-other "!f() { git show -s refs/heads/$1 -- && git update-ref refs/heads/$1 $2 && git show -s $1; }; f"

이동이 잘못된 목표를 전표로 성공시켰을 때 다시 이동할 수 있는 SHA가 이미 화면에 인쇄되어 있습니다.

언급URL : https://stackoverflow.com/questions/1591107/reset-other-branch-to-current-without-a-checkout