첫 번째 커밋을 제거하는 방법은 무엇입니까?
첫 번째 커밋을 제거하는 방법이 궁금합니다.
어떤 것을 시작하기 전에 어떤 개정이 있습니까?이 개정판에 이름이나 태그가 있습니까?
은 저게가안방은법을 입니다.update-ref
명령:
git update-ref -d HEAD
된 참조 명된참삭니다됩제를 합니다.HEAD
따라서 현재 지점의 모든 커밋이 재설정됩니다(작업이 손실되지 않습니다).
두커밋과 에는 첫번커밋커경병우는을 할 수 .rebase
명령:
git rebase -i --root
마지막 방법은 내용이 동일하지만 커밋 기록이 없는 고아 분기를 만들고 새 콘텐츠를 커밋하는 것입니다.
git checkout --orphan <new-branch-name>
모든 커밋은 상위 커밋을 참조하기 때문에 첫 번째 커밋 전에는 아무것도 없습니다.이렇게 하면 첫 번째 커밋이 특수(고아 커밋)되므로 이전 "상태"를 참조할 수 없습니다.
따라서 커밋을 수정하려면 간단히git commit --amend
다른 커밋을 만들지 않고 커밋을 수정합니다.
부터 다시하세요..git
소장저다저른장고를소만듭다니그리▁one로 다른 저장소를 만듭니다.git init
# Check out to a temporary branch:
git checkout --orphan TEMP_BRANCH
# Add all the files:
git add -A
# Commit the changes:
git commit -am "Initial commit"
# Delete the old branch:
git branch -D master
# Rename the temporary branch to master:
git branch -m master
# Finally, force update to our repository:
git push -f origin master
저는 레포의 모든 깃 커밋을 취소할 방법을 찾고 있었습니다. 마치 그런 일이 없었던 것처럼 말입니다.
리베이스는 한 지점까지 작동합니다.그러나 첫 번째(연대적으로 가장 오래된 깃 커밋)는 항상 문제가 될 것입니다. 부모가 없기 때문에 오류가 발생합니다.
이 대답들 중 어느 것도 저에게 그것을 완전히 해결해주지 않았습니다.하지만 많은 검색과 시행착오 끝에, 저는 이것이 효과가 있다는 것을 발견했습니다!
git update-ref -d HEAD
git push origin master -f
이것이 도움이 되길 바랍니다.좋은 하루 되세요.
Git repo에는 항상 첫 번째 커밋이 있기 때문에 첫 번째 커밋을 편집하는 것이 좋습니다.사을고려다니합을 사용하는 것을 .git commit --amend --reset-author
의 여느때달 git commit --amend
.
또 다른 방법은 다음과 같습니다.
- 지점으로 ( dev) (dev: dev)
git checkout dev
- 합니다.
git branch -D master
- 의 빈 .
git checkout --orphan master
이 것은 사례에 두개의 분기가 하십시오..git
디렉터리가 의미가 없습니다.
다른 분기를 유지하고 싶지만 예를 들어,master
다른 분기로 공통 기록 없이 분기를 새로 시작합니다. 이를 위해 안전한 방법 중 하나는 새 저장소를 만들고 이전 저장소에 해당 저장소의 내용을 푸시하는 것입니다.
cd ..
git init newrepo
cd newrepo
# make some initial commits
git push ../oldrepo master:newmaster
이렇게 하면 생성됩니다.newmaster
이전 리포지토리의 분기로, 다른 분기와 공통되지 않는 기록이 있습니다.물론, 당신은 그냥 덮어쓸 수 있습니다.master
마찬가지로git push -f
.
모든 분기와 기존의 모든 콘텐츠를 삭제하려면 그냥 실행합니다.
rm -rf .git/
방금 커밋했지만 푸시하지 않았다면 .git 디렉토리를 제거하고git init
다시...
질문에 대한 답은 다음과 같은지 여부에 따라 달라집니다.
분기에 대한 첫 번째 커밋만 제거하거나(다른 분기는 그대로 유지)
일부 분기에서 첫 번째 커밋을 제거하고 후속 커밋(및 다른 분기)을 '제자리에 두고'자 합니다.
이 중 두 번째는 비교적 간단합니다.근본적으로 근본적으로 다시 기반을 두어야 합니다. 여기서 대부분의 답변은 이를 수행하는 방법에 대한 것입니다.
두 번째 작업(다른 분기는 그대로 두고 분기에서 첫 번째 커밋만 제거)은 더 어렵습니다.아니면, 적어도, 만약 당신이 그것이 일어나기를 원하고 그 변화가 GitHub 또는 Bitbucket에 다시 반영되기를 원한다면, 특히 더 어렵습니다.Git에서는 커밋 없이 지점을 밀거나 강제로 밀 수 있는 방법이 전혀 없습니다.또한 GitHub 또는 Bitbucket에서 커밋이 없는 빈 브랜치를 새로 만들 방법이 전혀 없습니다.따라서 @user1338062의 답변에 따라 완전히 비어 있는 분기를 생성한 다음 원하는 분기(원하는 커밋 포함)를 다시 추가하려면 기본적으로 새 리포지토리를 생성해야 합니다.
따라서 저는 이 답변이 명확하지 않았을 수도 있는 것을 명확히 하기를 바랍니다. OP가 요청하는 것을 완전히 숙달하기 위해서는 두 가지 다른 (더 많든 덜 합리적인) 시나리오에 대해 취해야 할 두 가지 다른 접근 방식이 있습니다.
처음이자 유일한 약속이라면,git commit --amend
준비된 변경 사항을 결합하고 가장 최근의 변경 사항을 수정하는 데 사용할 수 있습니다. 즉, 여기서 첫 번째, 커밋.수정된 커밋은 자체 참조가 있는 새 커밋이 됩니다.
# stage the new changes which will replace previous commit
git add my_file.py
# commit and change message
git commit --amend -m "Updating first and only commit"
# or commit without changing the message
git commit --amend --no-edit
새 메시지가 준비되지 않은 경우 이전 커밋의 메시지만 편집합니다.
언급URL : https://stackoverflow.com/questions/10911317/how-to-remove-the-first-commit-in-git
'programing' 카테고리의 다른 글
R data.frame을 Excel 스프레드시트에 복사합니다. (0) | 2023.05.23 |
---|---|
NSLocalizedString()의 두 번째 매개 변수는 무엇입니까? (0) | 2023.05.23 |
선택 변경 시 데이터 속성 값 가져오기 (0) | 2023.05.23 |
u는 정확히 무엇을 합니까?"git push -u origin master" vs "git push origin master" (0) | 2023.05.23 |
X번 반복되는 문자열을 쉽게 반환할 수 있는 방법이 있습니까? (0) | 2023.05.23 |