본문 바로가기
기타/Git

[Git] mv

by 코딩하는 랄로 2023. 12. 20.
728x90

git mv

Git이 관리하는 파일의 이름을 변경하기 위해서는 git mv 명렁어를 사용하면 된다.

git mv [origin_file_name] [new_file_name]

 

해당 명렁어를 통해 git이 관리하는 파일의 이름을 변경한다면 어떻게 될까? 직접 파일 이름을 변경하고 git status 명렁어를 통해 살펴보자.

user@DESKTOP-UCJOAKJ MINGW64 /d/git (master)
$ ls
file1.txt

user@DESKTOP-UCJOAKJ MINGW64 /d/git (master)
$ git mv file1.txt file2.txt

user@DESKTOP-UCJOAKJ MINGW64 /d/git (master)
$ ls
file2.txt

user@DESKTOP-UCJOAKJ MINGW64 /d/git (master)
$ git status
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        renamed:    file1.txt -> file2.txt

 

git mv를 명렁어를 통해 file1.txt가 file2.txt 로 변경이 된 것을 볼 수 있다. 이 때 git status 명렁어를 사용하니 변경된 파일이 staged 상태임과 동시에 renamed 되었다는 변경 사항을 알려주는 것 또한 볼 수 있다.

 

지금까지의 예제와 결과를 보면, git은 파일 이름의 변경이나 이동에 대한 변경 사항을 기록을 하는 것처럼 보인다. 하지만, git은 다른 버전 관리 시스템과는 달리 이러한 변경에 대한 정보는 저장하지 않는다!!

 

그렇다면 git mv 명렁어는 무엇이며, 파일 이름의 변경 또는 이동에 관한 정보를 다루지 않음에도 어떻게 위와 같은 변경 사항을 알고 renamed 라는 정보를 보여줄 수 있는 것일까??

 

이에 대한 답 역시 git mv 명렁어에 있다. git mv는 개별적인 명렁어라기 보다는 하나의 과정을 진행하기 위한 명렁어들의 단축 명렁어라고 생각하면 된다. 즉, git mv 명렁어를 사용하면 git 자체적으로 다음과 같은 과정을 거치게 되는 것이다.

mv [origin_file_name] [new_file_name]
git rm [origin_file_name]
git add [new_file_name]

 

즉, git은 mv 명렁어를 실행하면 변경되는 이름을 가지는 파일을 생성 후 내용을 옮긴 뒤 기존의 파일을 삭제하고 생성된 파일을 git staging area에 add 하는 일련의 과정을 거치고, 이러한 과정을 거친 파일을 git은 이름이 변경되었다고 생각하는 것이다.

 

그렇기 때문에, git mv 명렁어 뿐만이 아니라 위의 과정을 거쳐서도 파일의 이름은 변경할 수 있다. 이 때, 중요한 점은 위의 모든 과정이 실행되어야 한다!! ( mv => rm/add )

user@DESKTOP-UCJOAKJ MINGW64 /d/git (master)
$ mv file2.txt file1.txt

user@DESKTOP-UCJOAKJ MINGW64 /d/git (master)
$ ls
file1.txt

user@DESKTOP-UCJOAKJ MINGW64 /d/git (master)
$ git status
On branch master
Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        deleted:    file2.txt

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        file1.txt

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

user@DESKTOP-UCJOAKJ MINGW64 /d/git (master)
$ git rm file2.txt
rm 'file2.txt'

user@DESKTOP-UCJOAKJ MINGW64 /d/git (master)
$ git add file1.txt

user@DESKTOP-UCJOAKJ MINGW64 /d/git (master)
$ git status
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        renamed:    file2.txt -> file1.txt

 

 

 

 

 

reference : pro git

728x90

'기타 > Git' 카테고리의 다른 글

[Git] 되돌리기  (0) 2023.12.27
[Git] log  (1) 2023.12.20
[Git] rm  (0) 2023.12.14
[Git] Commit  (2) 2023.12.06
[Git] diff  (0) 2023.12.04