Git에서 재설정 및 복원

Abdul Jabbar 2023년1월30일
  1. Git restore 명령
  2. Git 재설정 명령
  3. git resetgit restore의 차이점
Git에서 재설정 및 복원

Git에는 개별 파일과 관련된 작업을 수행하는 몇 가지 명령이 있지만 매우 드뭅니다. 이러한 명령은 git add, git rm, git mv, git checkout, git reset, git restore 및 각각의 반대입니다.

하지만 Git은 영리합니다. 다음 가져오기 마커에서 나중에 다시 가져올 수 있도록 가져온 작업이 있는 위치를 기억합니다. 이는 로컬에서 생성한 커밋만 포함하는 Git 리포지토리를 가질 수 있음을 의미합니다. 이미 다른 리포지토리에서 동일한 커밋을 가져왔다면 Git이 다시 가져오는 것을 방지할 수 있습니다.

여기 이 기사에서는 Git의 두 가지 중요한 명령에 대해 설명합니다.

  1. git restore
  2. git reset

Git restore 명령

Git restore 명령은 인덱스 또는 다른 커밋에서 작업 트리의 파일을 복원하는 데 사용됩니다. 이 명령은 현재 분기를 업데이트하지 않습니다. 다른 커밋에서 인덱스의 파일을 복원할 수도 있습니다. 현재 분기의 커밋과 다른 커밋의 코드를 사용하려는 경우 매우 유용합니다. restore 명령은 로컬 분기에서 커밋되지 않은 로컬 변경 사항을 버리는 데 도움이 됩니다.

Git restore는 현재 상황에 따라 세 가지 다른 상황에서 사용할 수 있습니다. 작업 복사본이나 인덱스 또는 둘 다에서 작업을 되돌릴 수 있습니다.

git restore [--worktree] <file>

위의 명령은 인덱스 파일의 내용과 함께 작업 복사본의 <file>을 덮어씁니다. 또는 작업 복사본의 변경 사항을 되돌린다고 말할 수 있습니다. 달리 말하지 않으면 제안되기 때문에 지정 여부는 중요하지 않습니다.

git restore --staged <file>

위의 명령은 인덱스 파일의 <file>을 로컬 저장소의 현재 HEAD로 덮어씁니다. 또는 커밋되지 않은 변경 사항이 최근에 준비된 콘텐츠라고 말할 수 있습니다. 이전 git reset HEAD <file>와 실제로 같다고 해도 틀리지 않습니다.

git restore --staged --worktree --source HEAD <file>

위에서 언급했듯이 작업 복사본과 인덱스를 현재 HEAD로 덮어쓰려면 위 명령을 사용합니다. 이 버전은 작업 복사본을 HEAD로 되돌리고 현재 로컬 분기에서 최근 준비되지 않은 작업을 모두 수행할 수 있습니다.

Git 재설정 명령

Git reset은 분기를 업데이트하고 분기에서 커밋을 추가하거나 제거하기 위해 팁을 이동하는 것입니다. 이 작업은 커밋 기록을 변경합니다. Git reset은 인덱스를 복원하는 데 사용되며 Git restore와 겹칩니다. 수동 편집을 사용하거나 git add 메서드를 사용하여 파일이 변경되면 git reset이 제대로 처리하지 않습니다.

파일은 새 커밋에 복사된 다음 이전 커밋에서 삭제된 것으로 표시됩니다. 파일이 작업 복사본에서 제거된 것처럼 보인다는 경고를 표시합니다. Git 재설정은 이름 바꾸기도 잘 처리하지 않습니다. 파일을 삭제하고 같은 이름의 파일을 추가한다는 의미는 아니지만 그렇습니다.

reset 명령은 작업 복사본에서 파일을 이동하는 데 사용할 수 없습니다. 파일은 다른 커밋으로 복사될 뿐만 아니라; 작업 복사본에서 제거되고 대상 커밋에서 새 파일로 복원됩니다. 파일에 원치 않는 변경을 가한 경우 파일을 삭제할 필요가 없습니다. 파일에 대한 모든 변경 사항을 취소할 수 있지만 파일 자체를 취소하지는 않습니다.

git resetgit restore의 차이점

restore 명령은 커밋되지 않은 로컬 변경 사항을 언스테이징하거나 폐기하는 데 도움이 됩니다. 인덱스 또는 다른 커밋에서 작업 트리의 파일을 복원하는 데 사용할 수 있습니다. 이 명령은 분기를 업데이트하지 않습니다. 다른 커밋에서 인덱스의 파일을 복원하는 것도 도움이 될 수 있습니다.

Git reset은 현재 분기를 업데이트하는 데 사용됩니다. git restore와 교차하여 인덱스를 복원하는 것도 도움이 될 수 있습니다. Git reset은 작업 트리의 변경 사항을 취소하기 위해 인덱스를 재설정하는 데 사용됩니다. 이 명령은 분기를 업데이트하지 않습니다. 인덱스만 재설정하고 작업 트리를 변경하지 않은 상태로 유지하는 --soft 옵션과 함께 주로 사용됩니다. 버리고 싶지 않은 단계적 변경 사항이 있는 경우 유용합니다.

Git reset은 작업 디렉토리가 깨끗하면(커밋할 변경 사항 없음) 성공적으로 완료되고 git restore는 작업 디렉토리가 깨끗하면 실패합니다. 둘 다 HEAD에 영향을 줄 수 있습니다. 그러나 Git restore는 스테이징 영역을 통해 간접적으로 HEAD에만 영향을 줍니다. Git reset은 인덱스 및 HEAD와 직접 작동할 수 있습니다. 둘 다 HEAD에 영향을 줄 수 있습니다. Git restore는 스테이징 영역을 통해 간접적으로 인덱스와 HEAD에만 영향을 줍니다.

Git reset은 아직 푸시하지 않은 경우에만 로컬 저장소를 수정하는 데 사용할 수 있습니다. 원격 서버에 푸시한 경우 git-reset은 스테이징 영역과 작업 복사본을 수정하지만 저장소는 수정하지 않습니다. 로컬 변경 사항을 취소하고 싶지만 다시 적용하고 싶지 않은 경우에 유용합니다.

Git restore는 스테이징 영역이나 로컬 작업 복사본이 아닌 저장소를 수정하는 데만 사용할 수 있기 때문에 반대입니다. 푸시한 커밋에는 영향을 미치지 않습니다.

작가: Abdul Jabbar
Abdul Jabbar avatar Abdul Jabbar avatar

Abdul is a software engineer with an architect background and a passion for full-stack web development with eight years of professional experience in analysis, design, development, implementation, performance tuning, and implementation of business applications.

LinkedIn

관련 문장 - Git Reset

관련 문장 - Git Restore