programing

첫 번째 커밋을 제거하는 방법은 무엇입니까?

powerit 2023. 5. 23. 22:32
반응형

첫 번째 커밋을 제거하는 방법은 무엇입니까?

첫 번째 커밋을 제거하는 방법이 궁금합니다.

어떤 것을 시작하기 전에 어떤 개정이 있습니까?이 개정판에 이름이나 태그가 있습니까?

은 저게가안방은법을 입니다.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.

또 다른 방법은 다음과 같습니다.

  1. 지점으로 ( dev) (dev: dev)git checkout dev
  2. 합니다.git branch -D master
  3. 의 빈 .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

반응형