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
'Program Tip' 카테고리의 다른 글
로그에서 잘리는 스택 추적을 어떻게 중지합니까? (0) | 2020.11.08 |
---|---|
Java의 System.exit ()는 try / catch / finally 블록과 어떻게 작동합니까? (0) | 2020.11.08 |
Eclipse / Maven : JUnit 테스트를 실행할 때 컴파일되지 않음 (0) | 2020.11.08 |
XML 네임 스페이스는 무엇입니까? (0) | 2020.11.08 |
StackOverflowException을 방지 및 / 또는 처리하려면 어떻게해야합니까? (0) | 2020.11.08 |