개발관련/Git

Git에서 파일을 언 스테이징하는 두 가지 방법이 있는 이유

Rateye 2021. 12. 5. 12:24
728x90
반응형
질문 : Git에서 파일을 언 스테이징하는 두 가지 방법이있는 이유는 무엇입니까?

때때로 git은 git rm --cached 가 파일을 언 스테이징하도록 git reset HEAD file 을 제안합니다. 어떤 것을 사용해야합니까?

편집하다:

D:\code\gt2>git init
Initialized empty Git repository in D:/code/gt2/.git/
D:\code\gt2>touch a

D:\code\gt2>git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       a
nothing added to commit but untracked files present (use "git add" to track)

D:\code\gt2>git add a

D:\code\gt2>git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
#
#       new file:   a
#
D:\code\gt2>git commit -m a
[master (root-commit) c271e05] a
 0 files changed, 0 insertions(+), 0 deletions(-)
  create mode 100644 a
  
  D:\code\gt2>touch b
  
  D:\code\gt2>git status
  # On branch master
  # Untracked files:
  #   (use "git add <file>..." to include in what will be committed)
  #
  #       b
  nothing added to commit but untracked files present (use "git add" to track)
  
  D:\code\gt2>git add b
  
  D:\code\gt2>git status
  # On branch master
  # Changes to be committed:
  #   (use "git reset HEAD <file>..." to unstage)
  #
  #       new file:   b
  #
  
답변

git rm --cached <filePath> 는 파일의 스테이징을 해제하지 않고 실제로 저장소에서 파일을 제거하는 단계 (이전에 이미 커밋되었다고 가정)하지만 파일을 작업 트리에 남겨 둡니다 (추적되지 않은 파일).

git reset- git reset -- <filePath> 는 주어진 파일에 대한 단계적 변경을 해제합니다.

즉, git rm --cached 를 사용했다면 기본적으로 이전에 커밋 된 적이 없기 때문에 스테이징을 해제 한 것처럼 보일 것입니다.

Git 2.24 업데이트
이 최신 버전의 git에서는 git reset git restore --staged 를 사용할 수 있습니다. git docs를 참조하십시오.

출처 : https://stackoverflow.com/questions/6919121/why-are-there-two-ways-to-unstage-a-file-in-git
728x90
반응형