source

브랜치에서 커밋을 삭제하려면 어떻게 해야 합니까?

gigabyte 2023. 4. 19. 23:09
반응형

브랜치에서 커밋을 삭제하려면 어떻게 해야 합니까?

지점 이력에서 커밋을 삭제하려면 어떻게 해야 합니까?git reset --hard HEAD

★★★★ git reset --hard 작업 디렉토리의 변경이 삭제됩니다.이 명령을 실행하기 전에 유지할 로컬 변경 내용을 저장하십시오.

당신이 그 커밋에 앉아 있다고 가정한다면, 이 명령어는 그것을 망칠 것이다.

git reset --hard HEAD~1

HEAD~1머리 앞의 커밋을 의미합니다.

'보다 낫다'의 볼 수 있어요.git log백업할 커밋의 커밋 ID를 찾은 후 다음을 수행합니다.

git reset --hard <sha1-commit-id>

이미 밀었다면 힘껏 밀어야 없앨 수 있어...

git push origin HEAD --force

그러나 다른 사용자가 꺼낸 경우 새 분기를 시작하는 것이 좋습니다.왜냐하면 그들이 끌어당기면, 그것은 단지 그들의 일에 합쳐질 것이고, 당신은 그것을 다시 밀어 올릴 수 있기 때문입니다.

밀었다면, 밀다를 하는 것이 수도 .git revert변경을 원래대로 되돌리는 「미러 이미지」커밋을 작성합니다.하다, 하다, 하다, 양양양 로로다다 만기 만기다


로 -- 고로 --git reset --hard HEAD진행 중인 작업을 없애고 싶다면 좋습니다.그러면 최신 커밋으로 리셋되고 작업 트리 및 인덱스의 모든 변경 내용이 지워집니다.


'한 할 '삭제 '삭제', '삭제', '삭제'한 커밋이 있습니다.git reflog가비지가 수집되지 않은 경우.

커밋을 아직 푸시하지 않은 경우 를 사용하여 커밋을 삭제할 수 있습니다.우선, 그 커밋이 얼마나 오래 전(약)인지 확인합니다.그럼 다음 작업을 수행합니다.

git rebase -i HEAD~N

~N을 기본 하는 것을 합니다.Ncommits)N예를 들어 숫자여야 합니다.HEAD~10그런 다음 Git이 제공하는 파일을 편집하여 문제의 커밋을 삭제할 수 있습니다.그 파일을 저장하면 Git은 삭제한 커밋이 존재하지 않는 것처럼 다음 커밋을 모두 고쳐 씁니다.

Git Book에는 사진과 예시로 재기입하는 좋은 섹션이 있습니다.

, 다른 곳에서 밀었던 것을 변경할 경우 강제 밀기를 계획하지 않는 한 다른 접근법이 필요하므로 주의해 주십시오.

또 다른 방법은 제가 개인적으로 좋아하는 명령어 중 하나입니다.

git rebase -i <commit>~1

됩니다.-i을 사용법그 이후 편집자는 모든 커밋을 나열하기 시작합니다.삭제할 커밋이 포함된 행을 삭제하고 파일을 저장합니다.기본 재배치 작업은 나머지 작업을 수행하고 해당 커밋만 삭제한 후 다른 모든 작업을 다시 로그로 재생합니다.

Git 사용 실수로 인해 작업을 커밋한 사람이 왜 모든 작업을 삭제하려고 하는지 알 수 없어서 이 답변을 첨부합니다.

작업을 유지하고 commit 명령어(repo를 푸시하기 전에 포착한 명령어)를 'undo'하고 싶은 경우:

git reset --soft HEAD~1

마지막 커밋 이후 진행 중인 작업을 파기하지 않는 한 --hard 플래그를 사용하지 마십시오.

커밋 전체의 삭제

git rebase -p --onto SHA^ SHA

삭제할 참조로 "SHA"를 바꿉니다.이 명령어의 "^"는 리터럴입니다.

http://sethrobertson.github.io/GitFixUm/fixup.html#change_deep

repo에서 commit 2 & 4를 삭제하고 싶다고 합시다.(새로운 커밋의 수가 클수록 커밋은 0이 가장 오래된 커밋이고 4가 최신 커밋입니다.)

commit 0 : b3d92c5
commit 1 : 2c6a45b
commit 2 : <any_hash>
commit 3 : 77b9b82
commit 4 : <any_hash>

주의: 사용 중이므로 repo에 대한 관리자 권한이 있어야 합니다.--hard ★★★★★★★★★★★★★★★★★」-f.

  • git checkout b3d92c5마지막으로 사용 가능한 커밋을 체크합니다.
  • git checkout -b repair이치노
  • git cherry-pick 77b9b823번입니다.
  • git cherry-pick 2c6a45b1번입니다.
  • git checkout master체크아웃 마스터
  • git reset --hard b3d92c5마스터를 사용 가능한 마지막 커밋으로 리셋합니다.
  • git merge repair이치노
  • git push -f origin master이치노
git rebase -i HEAD~2

여기서 '2'는 기본 설정을 변경할 커밋 수입니다.

'git rebase -i HEAD`

모든 커밋을 기본 재배치하는 경우.

그러면 다음 옵션 중 하나를 선택할 수 있습니다.

p, pick = use commit

r, reword = use commit, but edit the commit message
e, edit = use commit, but stop for amending
s, squash = use commit, but meld into previous commit
f, fixup = like "squash", but discard this commit's log message
x, exec = run command (the rest of the line) using shell
d, drop = remove commit

이러한 행은 순서를 변경할 수 있으며 위에서 아래로 실행됩니다.여기서 한 줄을 삭제하면 그 약속은 사라집니다.그러나 모든 항목을 제거하면 기본 재설정이 중단됩니다.빈 커밋은 코멘트 아웃됩니다.

이 커밋은 옵션 "d" 또는 커밋이 있는 행 삭제 옵션을 사용하여 간단히 삭제할 수 있습니다.

#[빠른 답변]

다음과 같은 여러 가지 대안이 있습니다.

  • 대안 1:

     git rebase -i <YourCommitId>~1
    

    원래대로 되돌릴 커밋 수에 대한 YourCommitId를 변경합니다.

  • 대안 2:

     git reset --hard YourCommitId
     git push <origin> <branch> --force
    

    원래대로 되돌릴 커밋 수에 대한 YourCommitId를 변경합니다.

    진행 중인 작업이 손실될 수 있으므로 이 옵션은 권장하지 않습니다.

  • 대안 3:

     git reset --soft HEAD~1
    

    커밋을 실행 취소하기만 하면 작업을 계속할 수 있습니다.

변경 내용을 공개하지 않은 경우 최신 커밋을 삭제하려면 다음 작업을 수행합니다.

$ git reset --hard HEAD^

(커밋되지 않은 변경도 모두 삭제되므로 주의하여 사용하십시오).

삭제할 커밋을 이미 게시한 경우 git revert를 사용합니다.

$ git revert HEAD

이력 강제 변경

마지막 커밋을 삭제할 뿐만 아니라 마지막 n개의 커밋의 특정 커밋을 삭제할 경우 다음 절차를 수행합니다.

git rebase -i HEAD~<number of commits to go back>, (그래서)git rebase -i HEAD~55번

다음 에서 '먹다'를 .pick로로 합니다.drop이치이치노일!!

추가 변경 이력

★★를 해 보세요.git revert <commit hash>. Revert는 지정된 커밋을 취소하는 새로운 커밋을 만듭니다.

git reset --hard commitId

git push <origin> <branch> --force

PS: CommitId는 원래대로 되돌리는 것을 말합니다.

최신 커밋을 수정하려면 다음 작업을 수행하여 커밋을 취소하고 해당 커밋 내의 파일을 분할 해제할 수 있습니다.

git reset HEAD~1

이것은 파일을 스테이징한 git add 명령어 이전의 상태로 저장소를 되돌립니다.변경 내용은 작업 디렉토리에 저장됩니다.HEAD~1은 브랜치의 현재 팁 아래에 있는 커밋을 나타냅니다.

N 커밋을 해제하고 작업 디렉토리에 코드 변경을 보관하는 경우:

git reset HEAD~N

최신 커밋을 삭제하고 코드 변경을 유지하고 싶지 않은 경우 "하드" 리셋을 실행할 수 있습니다.

git reset --hard HEAD~1

마찬가지로 마지막 N개의 커밋을 폐기하고 코드 변경을 유지하지 않을 경우 다음 절차를 수행합니다.

git reset --hard HEAD~N

로컬 브랜치에서 삭제하려면

git reset --hard HEAD~1

원격 분기에서 삭제하려면

git push origin HEAD --force

현재 실행 중인 커밋을 삭제하지만 데이터를 삭제하지 않으려면 다음과 같이 하십시오.

git reset --soft HEAD~1

현재 실행 중인 커밋을 삭제하고 관련 데이터를 삭제하려는 경우:

git reset --hard HEAD~1

추신: 이러한 명령어는 로컬 커밋만 삭제합니다.

출처 : https://gist.github.com/sagarjethi/c07723b2f4fa74ad8bdf229166cf79d8

마지막 커밋 삭제

예를 들어, 마지막 커밋은

git 푸시 오리진 +aa61ab32^: 마스터

이 커밋을 삭제하고 나서, 다음의 간단한 방법으로 간단하게 이 커밋을 삭제할 수 있습니다.

순서

  1. 먼저 브런치를 현재 커밋의 부모로 리셋합니다.

  2. 리모콘에 강제로 밀어 넣습니다.

git reset HEAD^ --hard

git push origin -f

특정 커밋에 대해 리셋하는 것은 다음과 같습니다.

git reset bb676878^ --hard

git push origin -f

인텔리J 유저라면, 인터페이스는 훌륭합니다.클릭 한 으로 효과를 동시에 확인할 수 있습니다.이 플레이스의 바로 가기:Cmd + 9MacOS mac mac mac mac mac mac mac mac mac mac

여기에 이미지 설명 입력

이를 위해 하나의 명확한 파이프라인을 게시합니다.

스텝 1: git 로그를 사용하여 커밋 ID를 가져옵니다.

git log

여기에 이미지 설명 입력

2단계: git reset을 사용하여 이전 버전으로 돌아갑니다.

git reset --hard <your commit id>

위의 모든 명령어는 커밋 전 상태로 워크 트리 및 인덱스의 상태를 복원하지만 저장소 상태는 복원하지 않습니다.이것을 보면, 「삭제된」커밋은 실제로 삭제되지 않고, 현재의 브랜치 끝에 있는 커밋이 아닙니다.

자기 명령으로 커밋을 제거할 방법은 없다고 생각합니다.유일한 방법은 로그에서 삭제하고 다시 로그를 작성한 후git prune --expire -now.

커밋과 복귀를 표시하여 이력을 유지하려면 다음 명령을 사용합니다.

git revert GIT_COMMIT_HASH

되돌리는 이유를 설명하는 메시지를 입력한 후 다음을 수행합니다.

git push  

를 할 때git log" 및 "" 메시지가 모두 됩니다. "commit" 、 "commit" 、 "commit" 、 "commit" 、 "commit" 、 "commit" 、 "commit" 、 "commit" you 、 "

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

되돌리는 브랜치를 체크 아웃 한 후 로컬 작업 복사를 리모트서버의 최신 커밋으로 리셋 합니다(그 후의 모든 것은 bye-bye).이를 위해 SourceTree에서 를 오른쪽 클릭하여 [Reset BRANCHNAME to this commit]를 선택합니다.명령행은 다음과 같습니다.

git reset --hard COMMIT_ID

리모트로부터 지점을 체크 아웃 한 지 얼마 되지 않았기 때문에, 로컬의 변경은 불필요합니다.하지만 만약 그렇게 한다면 그들을 잃게 될 거야

그런 다음 리포지토리의 로컬 디렉터리로 이동하고 다음 명령을 실행합니다.

git -c diff.mnemonicprefix=false -c core.quotepath=false \
push -v -f --tags REPOSITORY_NAME BRANCHNAME:BRANCHNAME

그러면 로컬 저장소의 현재 커밋 뒤에 있는 커밋이 모두 지워지고 해당 브랜치만 지워집니다.

실수:

I git rebase -i --root브랜치에서는 마스터와는 다른 첫 번째 커밋을 다시 쓸 수 있다고 생각하고 있었습니다(GitHub for Windows의 디폴트 뷰는 마스터와 비교하여 전체를 숨길 수 있습니다).

900개 이상의 커밋이 Sublime에 로딩되는 동안 실리콘 밸리 수염을 길렀습니다.900명 이상의 모든 사람이 태연하게 재기동하여 지금까지의 커밋 시간을 리셋하고 있기 때문에, 저는 배터리를 충전하고 면도를 진행했습니다.

Git를 누르고 원래 시간을 유지하기로 결심하고 이 로컬 저장소를 삭제하고 리모트에서 다시 복제했습니다.

삭제하려고 했던 마스터에 최근 불필요한 커밋을 다시 추가했기 때문에 이렇게 진행되었습니다.

모든 옵션 사용:

싶지 않았다git revert 커밋을 에 둘 수 - Git을 우위에 둘 수 있습니다.

git reset --hard HEADreflog이자 유일한 「」HEAD이 - Git - 다습다다 다다다다 다다다 。

최신 SHA를 얻기 위해 github.com에서 원격 저장소를 확인했습니다.- 마이너 승소입니다.

해 보니 ★★★★★★★★★★★★★★★★★.git reset --hard <SHA>1... 2... !이 이겼다.커밋이 돌아왔습니다. 기트

, 시용 git rebase -i <SHA>, 그 후 라인을 삭제합니다.아쉽지만 소용이 없었어요."여기서 한 줄을 삭제하면 커밋은 사라집니다." 아... 2.8.3 릴리즈 노트의 n00b새로운 기능을 트롤링합니다.

해결 방법:

git rebase -i <SHA>d, drop = remove commit.

확인을 위해 다른 지점에 체크 아웃을 했는데 voila - 마스터에서 가져오기/풀링에 대한 숨김 커밋이 없습니다.

https://twitter.com/holman/status/706006896273063936

좋은 하루 되세요.

마지막 커밋을 망친 경우(잘못된 메시지, 일부 변경사항 추가를 잊어버린 경우)를 퍼블릭리포에 푸시하기 전에 수정해야 하는 경우 다음을 사용하지 않을 수 있습니다.

git commit --amend -m "New message here"

새롭게 스테이징된 변경이 있는 경우, 변경은 (삭제하려고 하는) 마지막 커밋과 결합되어 그 커밋을 대체하게 됩니다.

물론 커밋을 푸시한 후 수정하면 히스토리를 다시 쓰는 것이므로 이 커밋을 실행하면 그 의미를 이해할 수 있습니다.

이전 커밋 메시지를 사용하고 싶은 경우 '-m' 대신 '--no-edit' 옵션을 전달할 수도 있습니다.

문서: http://git-scm.com/docs/git-commit.html

이미 푸시한 경우 먼저 HEAD($GIT_COMMIT_HASH_HERE)에서 원하는 커밋을 찾은 후 다음을 실행합니다.

git reset --hard $GIT_COMMIT_HASH_HERE
git push origin HEAD --force

그런 다음 repo가 복제된 각 위치에서 다음을 수행합니다.

git reset --hard origin/master

커밋 및 푸시 시 보통 수행하는 작업(커밋을 푸시한 사람이 있는 경우 문제 해결):

git reset --hard HEAD~1

git push -f origin

이것이 도움이 되기를 바란다

git reset --hard HEAD~1
당신은 이제 이전의 우두머리에 있게 될 것이다.뭇뭇나을 사용하다됩니다.

로컬 브랜치로 리셋

git reset --hard HEAD~<Number of commit> So git reset --hard HEAD~3

원점으로 강제 푸시

git push -f origin

나는 이미 밀었다.일부 커밋을 원격으로 반환해야 합니다.많은 변형을 시도했지만, Git Bush를 통해 Justin이 제공하는 이것만 잘 작동합니다.

git reset --hard $GIT_COMMIT_HASH_HERE
git push origin HEAD --force
// display git commit log    
$ git log --pretty=oneline --abbrev-commit

// show last two commit and open in your default editor
// then delete second commit line and save it
$ git rebase -i HEAD~2

레퍼런스:git, local 및 remote에서 커밋을 삭제하는 방법

임시 폴더로 코드 백업을 가져옵니다.다음 명령어는 서버와 동일하게 리셋됩니다.

git reset --hard HEAD
git clean -f
git pull

변경을 유지하고 최근 커밋을 삭제할 경우

git reset --soft HEAD^
git pull

삭제, 로컬 커밋

위의 이미지와 같이 revert"test change 2" commit (SHA1 ID: 015b5220c50e3dfbb1063f23789de92ae1d3481a2)를 삭제하고 싶습니다.gitk명령어)를 사용합니다.

그 때문에, (아래의 모든 커맨드는 로컬에서만 동작합니다)를 사용할 수 있습니다.삭제 후 푸시 필요):

  1. git reset --hard 515b5220c50e3dfbb1063f23789d92ae1d3481a2//그 커밋을 백업합니다(테스트 변경 4 커밋의 SHA1 ID는 515b5220c50e3dfbb1063f23789ae1d3481a2).
  2. git reset --hard HEAD~1// 한번 커밋하기 합니다.// 한 번 더 커밋하기 전에 백업합니다.
  3. git reset --hard HEAD^을 git//git에서

삭제 후:

삭제 커밋 후

언급URL : https://stackoverflow.com/questions/1338728/how-do-i-delete-a-commit-from-a-branch

반응형