programing

파일 및 폴더를 포함하여 커밋되지 않은 변경 사항을 되돌리는 방법은 무엇입니까?

powerit 2023. 6. 2. 21:23
반응형

파일 및 폴더를 포함하여 커밋되지 않은 변경 사항을 되돌리는 방법은 무엇입니까?

작업 트리와 인덱스에서 커밋되지 않은 모든 변경 사항을 되돌리고 새로 생성된 파일과 폴더도 제거하는 Git 명령이 있습니까?

다음 두 가지 명령을 실행할 수 있습니다.

# Revert changes to modified files.
git reset --hard

# Remove all untracked files and directories.
# '-f' is force, '-d' is remove directories.
git clean -fd

현재 작업 디렉터리의 변경 사항만 되돌리려면 다음을 사용합니다.

git checkout -- .

그 전에 다음과 같은 방법으로 실제로 어떤 작업을 수행하지 않고 되돌릴 파일을 나열할 수 있습니다.

git checkout --

"git checkout --..."을 사용하여 작업 디렉토리의 변경사항을 취소합니다.

git checkout -- app/views/posts/index.html.erb

또는

git checkout -- *

준비되지 않은 파일의 모든 변경 사항을 git 상태 등에서 제거합니다.

modified:    app/controllers/posts.rb
modified:    app/views/posts/index.html.erb

한 가지 간단한 방법은 다음 두 가지 명령을 실행하는 것입니다.

  1. git stash변경 내용이 저장소로 이동하여 HEAD 상태로 돌아갑니다.
  2. git stash drop마지막 명령에서 생성된 최신 스택이 삭제됩니다.

Git 2.23은 작업 트리 파일을 복원하는 명령을 도입했습니다.

현재 디렉터리의 모든 파일을 복원하는 방법

git restore .

인덱스의 버전과 일치하도록 모든 C 소스 파일을 복원하려면 다음을 수행합니다.

git restore '*.c'
git clean -fd

도움이 되지 않았고, 새로운 파일들이 남아있었습니다.모든 작업 트리를 완전히 삭제하고 나서,

git reset --hard

추가에 대한 조언은 "https://stackoverflow.com/questions/673407/how-do-i-clear-my-local-working-directory-in-git/673420#673420 "을 참조하십시오.-x치료 옵션:

git clean -fdx

메모 -x플래그는 Git에 의해 무시된 모든 파일을 제거할 것이므로 주의하십시오(제가 참조하는 답변의 토론 참조).

다음 명령을 사용할 수 있습니다.git reset --hard

작업 복사본에만 있는 커밋되지 않은 변경사항이 있는 경우 최근 커밋된 복사본으로 되돌리려면 다음을 수행합니다.

git checkout filename

사라지지 않을 것 같은 파일이 여전히 있을 수 있습니다. 편집되지 않았을 수도 있지만 Git가 CRLF/LF 변경으로 인해 편집 중인 것으로 표시했을 수도 있습니다.에서 변경한 내용이 있는지 확인합니다..gitattributes최근에.

저의 경우, CRLF 설정을.gitattributes파일 및 모든 파일은 이로 인해 "수정된 파일" 목록에 남아 있습니다..git 특성 설정을 변경하면 특성이 사라집니다.

다음 Git 명령을 사용하면 저장소에서 커밋되지 않은 모든 변경 내용을 되돌릴 수 있습니다.

git checkout .

예:

ABC@ABC-PC MINGW64 /c/xampp/htdocs/pod_admin (master)
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   application/controllers/Drivers.php
        modified:   application/views/drivers/add.php
        modified:   application/views/drivers/load_driver_info.php
        modified:   uploads/drivers/drivers.xlsx

no changes added to commit (use "git add" and/or "git commit -a")

ABC@ABC-PC MINGW64 /c/xampp/htdocs/pod_admin (master)
$ git checkout .

ABC@ABC-PC MINGW64 /c/xampp/htdocs/pod_admin (master)
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.

nothing to commit, working tree clean

Git 도움말에서:

 Changes to be committed:
      (use "git restore --staged <file>..." to unstage)

    Changes not staged for commit:
      (use "git add <file>..." to update what will be committed)
      (use "git restore <file>..." to discard changes in working directory)

저는 보통 잘 작동하는 방법을 사용합니다.

mv fold/file /tmp
git checkout fold/file

안전하고 먼 길:

  1. git branch todelete
  2. git checkout todelete
  3. git add .
  4. git commit -m "I did a bad thing, sorry"
  5. git checkout develop
  6. git branch -D todelete

사용:

git reset HEAD filepath

예:

git reset HEAD om211/src/META-INF/persistence.xml

언급URL : https://stackoverflow.com/questions/5807137/how-can-i-revert-uncommitted-changes-including-files-and-folders

반응형