IT story

지점을 머리로 빨리 감는 방법?

hot-time 2020. 4. 15. 12:35
반응형

지점을 머리로 빨리 감는 방법?


지점에서 오랫동안 개발 한 후 마스터로 전환했습니다. 로그에는 다음이 표시됩니다.

당신의 브랜치는 167 커밋까지 '원산지 / 마스터'뒤에 있으며 빨리 감을 수 있습니다.

나는 시도했다 :

git checkout HEAD

효과가 없습니다. 마스터에서 중간 커밋을 체크 아웃했기 때문입니다.

마스터가 머리에 머무르는 방법?


하기:

git checkout master
git pull origin

origin/master분기 를 가져오고 병합합니다 ( git pull원점이 기본값 이라고 말할 수도 있습니다 ).


시도하십시오 git merge origin/master. 빨리 감기 만하고 싶다면이라고 말할 수 있습니다 git merge --ff-only origin/master.


당신의 상황에서, git rebase트릭을 할 것입니다. master에없는 변경 사항이 없으므로 git은 빨리 감기됩니다. 리베이스 워크 플로로 작업하는 경우 혼란스러운 경우 병합 커밋으로 끝나지 않으므로 더 권장 할 수 있습니다.

username@workstation:~/work$ git status
# On branch master
# Your branch is behind 'origin/master' by 1 commit, and can be fast-forwarded.
#   (use "git pull" to update your local branch)
#
nothing to commit, working directory clean
username@workstation:~/work$ git rebase
First, rewinding head to replay your work on top of it...
Fast-forwarded master to refs/remotes/origin/master.
# On branch master
nothing to commit, working directory clean

git checkout master
git pull

일을해야합니다.

master가 아닌 다른 브랜치에서 작업 할 때마다 누군가가 master로 변경하고 git pull 을 수행 할 때마다 "당신의 브랜치가 뒤에 있습니다"라는 메시지가 나타납니다 .

(branch) $ //hack hack hack, while someone push the changes to origin/master
(branch) $ git pull   

이제 원산지 / 마스터 참조가 당겨하지만, 마스터가되어 병합되지 함께

(branch) $ git checkout master
(master) $ 

이제 마스터는 출발지 / 마스터 뒤에 있으며 빨리 전달 될 수 있습니다

this will pull and merge (so merge also newer commits to origin/master)
(master) $ git pull 

this will just merge what you have already pulled
(master) $ git merge origin/master

이제 마스터와 출발지 / 마스터가 동기화되었습니다


다른 지점에 서서 최신 버전의 마스터를 확인하려면 다음을 수행하십시오.

git checkout -B master origin/master


빨리 감기를 원하는 사람에게 그들이 에없는 그 지점을 확인하지 않고 (자신 포함) 다른 원격 지사에, 당신은 할 수 있습니다 :

git fetch origin master:other

이 기본적으로 빨리 감기 인덱스 otherorigin/master당신이하지 않은 경우 other지점입니다. 이 방법으로 여러 지점을 빨리 감을 수 있습니다.

일정 기간 동안 다른 지점에서 작업하고 있고 오래된 지점을 원격에서 해당 헤드로 업데이트하려는 경우 :

git fetch origin master:master other:other etc:etc

복잡성이 필요하지 않습니다. 지사에 서서 git pull 을 수행하십시오.

또는 두 번째 시도로 git pull origin master 는 첫 번째 명령으로 운이 좋지 않은 경우에만 사용하십시오.


로컬 변경 사항을 최신 원격 상태로 이동 하여 현재 로컬 추적기 브랜치 리베이스 하려면 :

$ git fetch && git rebase

보다 일반적으로, 로컬 변경 사항 빨리 감기 및 삭제하려면 ( 하드 리셋 ) * :

$ git fetch && git checkout ${the_branch_name} && git reset --hard origin/${the_branch_name}

빨리 감기 와 지역 변경 (유지 REBASE를 )

$ git fetch && git checkout ${the_branch_name} && git rebase origin/${the_branch_name}

*-HEAD git reflog의 상태를 역순으로 표시하는 의도하지 않은 하드 리셋으로 인한 변경을 취소하려면 HEAD가 리셋 작업 전에 가리키고있는 해시 (일반적으로 명백 함)를 찾아 해당 해시로 분기를 하드 리셋합니다.


분기 포인터를 HEAD로 이동하십시오.

git branch -f master

브랜치가 master이미 존재하므로 git을 사용하지 않으면 git에서 덮어 쓸 수 없습니다 -f(이 인수는의 약자입니다 --force)

또는 rebase를 사용할 수 있습니다.

git rebase HEAD master

자신의 위험에 따라하십시오;)

참고 URL : https://stackoverflow.com/questions/9512549/how-to-fast-forward-a-branch-to-head

반응형