서브모듈 - 어떻게 커밋 마스터가 git에서 가리키는 것을 변경할 수 있습니까?




gitk 사용법 (4)

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

https://code.i-harness.com

git에서 필자는 master 브랜치에 커밋을했는데, 실제로 필자가 feature 브랜치에서 작업해야했을 때이다. 나는 이것을 변경하여 주인이 시작한 곳으로 돌아가고, 주인은 새로운 지류에있게되었습니다. 기본적으로 커밋 내역은 다음과 같습니다.

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

그리고 나는 이렇게 보이기를 원한다.

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

어떻게 마스터 포인트를 변경할 수 있습니까?


현재 HEAD (HEAD = master라고 가정)에서 new_branch 라는 새 분기를 new_branch , master를 C로 재설정하고 new_branch 다시 전환합니다 ( new_branch 관점에서 말하기).


$ 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 branch new_branch
  • 마스터를 origin / master로 git reset --hard origin/master : git reset --hard origin/master
  • 새로운 브랜치를 다시 git checkout new_branch 하십시오 : git checkout new_branch
  • 변경 사항을 취소하십시오 : git stash pop

작업 나무가 깨끗한 경우 stash / unstash는 필요하지 않습니다. 작업 트리에 변경 사항이 없는지 확인하십시오. 재설정하면 제거됩니다.

또 다른 가능성 (더 빠르고, 은닉하고 재설정 할 필요가 없음) :

  • 새 분기 git checkout -b new_branch master : git checkout -b new_branch master
  • '새로운'마스터 브랜치를 만들고 origin / master 커밋을 가리킨다. git branch -f master origin/master




git