찾다

 >  Q&A  >  본문

Git이 파일을 완전히 삭제하나요?

으아아아

세 번째 줄 commit을 실행한 다음 프롬프트

를 실행했습니다. 으아아아

그렇다면git checkout -- b.txt 그래도 대기 장소로 복원할 수 있나요? 왜 완전히 삭제되지 않았나요?

習慣沉默習慣沉默2791일 전590

모든 응답(7)나는 대답할 것이다

  • PHPz

    PHPz2017-05-02 09:49:07

    새내기. . . 튜토리얼을 작성해 보세요. . . . .

    원칙적으로 git에는 파일을 로컬로 저장할 수 있는 세 가지 위치가 있습니다.

    <올>
  • 작업 트리: 볼 수 있는 모든 파일과 폴더를 나타냅니다.

  • index: 실제로는 다음 저장소처럼 .git 폴더에 저장됩니다(저장 형식은 여기서 논의하지 않습니다)

  • 저장소: 제출된 모든 버전을 저장합니다.

  • 모든 것이 제출된 후 WorkingTree, 인덱스 영역 및 저장소의 최신 제출물은 완전히 동일합니다.

    git add은 인덱스 영역의 파일을 WorkingTree의 파일로 교체/업데이트한다는 의미입니다. 따라서 git add b.txt 이후에는 인덱스의 b.txt 파일이 현재 저장된 b.txt로 업데이트됩니다.

    rm b.txt 파일 삭제를 의미하는 리눅스 명령어일 뿐입니다. git의 경우 WorkingTree에서 b.txt만 삭제됩니다.

    git commit 파일을 인덱스로 패키징하여 저장소에 넣는 것을 의미합니다. b.txt는 현재 인덱스 영역에 있으므로 git commit는 여전히 b.txt 저장소에 업데이트됩니다.

    으아아아

    다음은 현재 WorkingTree와 인덱스 영역의 차이점을 보여줍니다.
    b.txt 파일이 현재 WorkingTree에서 삭제되었지만 파일은 여전히 ​​인덱스에 존재합니다.

    으아아아

    이 프롬프트는 경고라고 해야 합니다. git commit는 인덱스 영역의 내용을 패키징하여 저장소에 넣는 것을 의미하기 때문입니다. 그러나 이전에 커밋되었고 새로운 항목이 추가되지 않았으므로 인덱스의 내용이 영역은 최신 제출과 동일하므로 git은 다시 저장할 필요가 없으므로 "아무것도 커밋할 수 없습니다"라고 표시됩니다.

    git rm 이 명령의 의미는 특정 파일을 인덱스 영역과 WorkingTree에서 삭제하여 git rm b.txt더 이상 인덱스에 존재하지 않게 b.txt한다는 것입니다. 그게 다야

    git checkout <branch> 브랜치의 최신 커밋으로 WorkingTree 및 인덱스 영역의 콘텐츠를 업데이트하는 것을 의미합니다. 되돌릴 수 없으므로 이 두 위치의 콘텐츠가 저장소에 제출되지 않은 경우 이 명령은 프롬프트를 표시합니다.
    git checkout -- filename은 WorkingTree의 파일을 인덱스 영역의 내용으로 바꾸는 것을 의미합니다. --는 선택 사항이며 이 매개변수 뒤의 모든 내용은 파일 이름임을 나타냅니다. (때때로 브랜치/태그 이름이 파일 이름과 같을 수도 있기 때문입니다)

    추가 명령이 포함되어 있습니다. . .
    git status 이는 WorkingTree와 인덱스 영역 간의 차이(기본값은 빨간색), 인덱스와 최근 제출된 버전 간의 차이(기본값은 녹색? 진한 녹색?)를 표시한다는 의미입니다. 또한, 그 사이에 서로 업데이트하는 방법에 대한 팁도 있을 예정입니다.

    회신하다
    0
  • 为情所困

    为情所困2017-05-02 09:49:07

    해 보세요 git rm filename

    회신하다
    0
  • 巴扎黑

    巴扎黑2017-05-02 09:49:07

    질문자는 먼저 git에 추가 작업이 필요한 이유를 알아야 합니다. git에는 처음에 명령줄만 있기 때문에 추가 작업은 GUI의 파일 선택 작업과 동일하므로 추가 및 커밋 작업은 다음과 같이 간주되어야 합니다. 전체(GUI와 마찬가지로 아래에서 파일을 선택하여 제출할 수 있음)이며 분리되어서는 안 됩니다.

    회신하다
    0
  • 滿天的星座

    滿天的星座2017-05-02 09:49:07

    1.git add b.txt //작업 공간의 b.txt를 스테이징 영역(스테이지)에 추가
    2.rm b.txt //git rm을 실행하지 않고 작업 공간에서 b.txt 삭제 b.txt deletes 저장소의 파일
    3.git commit -m 'b.txt 파일 삭제'//git rm b.txt가 실행되지 않으므로 커밋은 1의 내용만 제출합니다
    -- >실행해야 합니다 파일을 삭제하려면 2에서 3 사이의 git rm b.txt

    회신하다
    0
  • 阿神

    阿神2017-05-02 09:49:07

    git에서 파일 이름을 수정하는 것과 파일을 삭제하는 것은 거의 동일하다는 점을 알려드리고 싶습니다. 위에서 언급했듯이 각각 git rm 및 git mv 명령을 사용해야 작동합니다. . 잘 보시면 됩니다.

    회신하다
    0
  • 巴扎黑

    巴扎黑2017-05-02 09:49:07

    .파일 삭제:
    작업공간에서 파일 삭제, rm 파일 이름
    두 가지 상황이 있습니다:
    첫 번째 상황: 버전 라이브러리에서도 파일을 삭제해야 합니다.
       git rm 파일 이름
       git commit -m '설명'
      두 번째 경우: 실수로 파일을 삭제했습니다
      git checkout -- 파일 이름

    회신하다
    0
  • 巴扎黑

    巴扎黑2017-05-02 09:49:07

    앞에 git rm을 하나 적게 추가했습니다

    회신하다
    0
  • 취소회신하다