Program Tip

git에서 커밋 마스터 포인트를 어떻게 변경할 수 있습니까?

programtip 2020. 11. 8. 10:55
반응형

git에서 커밋 마스터 포인트를 어떻게 변경할 수 있습니까?


git에서는 실제로 기능 브랜치에서 작업해야 할 때 마스터 브랜치에 커밋했습니다. 마스터가 시작된 위치로 돌아가고 마스터에 있던 것이 이제 새 브랜치에 있도록 변경하고 싶습니다. 기본적으로 내 커밋 내역은 다음과 같습니다.

A -- B -- C -- D -- E
          |         |
          |       master
     origin/master

그리고 다음과 같이 보이기를 원합니다.

        master
          |
A -- B -- C -- D -- E
          |         |
          |       new_branch
     origin/master

마스터 포인트를 변경하려면 어떻게해야합니까?


  • 당신의 커밋되지 않은 것을 숨기십시오. git stash
  • 새 분기를 만듭니다. git branch new_branch
  • 마스터를 오리진 / 마스터로 재설정 : git reset --hard origin/master
  • 새 분기를 다시 확인하십시오. git checkout new_branch
  • 변경 사항을 공개하십시오. git stash pop

작업 트리가 깨끗하면 숨김 / 숨김 해제가 필요하지 않습니다. 작업 트리에 변경 사항이 없는지 확인하십시오. 재설정하면 제거되므로 --hard


또 다른 가능성 (더 빠르며 숨김 및 재설정 할 필요 없음) :

  • 새 브랜치 체크 아웃 : git checkout -b new_branch master
  • '새'마스터 브랜치를 만들고 원점 / 마스터의 커밋을 가리 킵니다. git branch -f master origin/master

$ git checkout master
$ git reset --hard <commit-id-for-master-to-sit-at>

예를 들어 이것을 시도하십시오

$ mkdir example; cd example
$ git init
$ vi testFile.txt
(now add "test commit 1" to line 1 of file)
$ git add *
$ git commit
(add message "(+) 1st commit" to git commit)
$ vi testFile.txt
(now add "test commit 2" to line 1 of file)
$ git add *
$ git commit
(add message "(+) 2nd commit" to git commit)
$ vi testFile.txt
(now add "test commit 3" to line 1 of file)
$ git add *
$ git commit
(add message "(+) 3rd commit" to git commit)
$ git tag final_head
$ git reset --hard HEAD~1

이 예제는 마스터를 다른 커밋으로 이동하는 것을 보여줍니다. 여기서 태그를 사용하면 이전 마스터를 저장할 수 있습니다.


여기설명 된 것과 같지만 더 간단하고 재설정이 필요하지 않습니다. 마스터가있는 새 브랜치를 만든 다음 손쉽게 마스터를 삭제하고 마스터를 이동하려는 위치를 다시 체크 아웃하고 거기에 새 마스터 브랜치를 만듭니다.

git stash
git checkout -b old_master_was_here
git branch -d master
git checkout origin/master
git checkout -b master

master의 해시가있는 .git / refs / heads / master로 이동하여 원하는대로 변경하십시오. gitg를 사용하여 마스터의 해시를 빠르게 찾고 나중에 이동이 성공했는지 확인합니다.


new_branch현재 HEAD에 새 분기 를 만들고 (HEAD = 마스터라고 가정), 마스터를 C로 재설정하고 new_branch다시 전환 합니다 (SmartGit 측면에서 말함).

참고URL : https://stackoverflow.com/questions/4166019/how-can-i-change-which-commit-master-points-to-in-git

반응형