로컬파일들을 추가하기_add

2021. 6. 27. 01:15Big Dreamer_Developer/Git

echo hello world! > a.txt

echo라는 명령어를 이용해서 간단하게 자신이 설정한 디렉토리 안에 새로운 a라는 파일을 만들어보자.

'hello world!'라는 문자열을 위의 형식을 이용해 a.txt파일에 저장을 할 수 있다.

 

위와 같은 방식으로 b.txt, c.txt 파일까지 만들고 난 후 

ls를 입력하여 현재 디렉토리 안이 어떠한 상태인지 확인해보자.

a.txt b.txt c.txt 가 있는 것을 확인할 수 있다.

 

git status 명령어를 입력해보자. 지금 현재 파일의 대략적인 정보와 상태들을 확인해 볼 수 이싿.

master branch 위에서 작업을 하고 있고 아직 commit은 없고 Untracked 된 파일 세 가지가 있다라고 친절하게 설명이 되어져 있을 것이다. 

 

또한 아직 commit할 것은 없지만 untracked 된 파일들이 있기 때문에 git add 라는 명령어를 이용해서 트래킹 할 수 있어라고 나와 있을 것이다. 지금 현재 working directory에서 사용하는 untracked 된 부분에 a, b, c가 있다.

Git이 트래킹 할 수 있도록 Stahing area에 옮기려면 git add라는 명령어를 이용하면 된다.

git add a.txt

위 코드는a라는 파일을 이제 commit할 준비가 되어 있어라는 의미를 가지게 하기 위해 a 파일을 add(추가)한다. 그 후 다시 git status를 이용하면 commit할 준비가 되어있는 변경사항 새로운파일 a.txt가 있고 b와 c는 아직 untracked된 파일에 있는 것을 확인할 수가 있다. 이렇게 add 라는 명령어를 이용하는 것은, 아! 이제 이 파일은 준비가 되었어 staging area로 옮겨야지라고 확인을 하는 작업이다. 

 

남아있는 b.txt, c.txt 파일들도 모두 위와 같은 방식으로 staging area에 옮길 수 있는데, 만약 txt로 끝나는 모든 파일을 한번에 추가하고 싶다면 

git add *.txt

이렇게 작성하면 b와 c가 함께 추가될 수 있다.

 

자 이제 a, b, c 모두가 commit할 준비가 되어져 있다.

 

그런데 만약 이러한 상태에서 

echo createhb >> a.txt

새로운 문자열인 createhb를 새롭게 a 파일에 추가를 하게 되면 어떻게 될까?

git status를 이용해 확인해보자, 총 3가지 파일을은 commit할 준비가 되어 있는데 이제 a라는 파일은 수정(Modified)되어져 있는 것을 확인해 볼 수 있다.

 

 

지금의 상태(지금 상태를 더 시각적으로 볼 수 있는 방법은 소스트리를 이용해서 보는 방법이 있다.)를 시각적 측면에서 바라봐 보자. a, b, c는 Staging area에 있고 a 파일은 트래킹이 되어있고 modified 된 상태에 있는 것을 확인해 볼 수 있다. 여기에서 동일하게 git add 명령어를 이용해서 a 파일을 추가하고, 그 후 git status를 확인해보면 

a, b, c가 Staging area에 옮겨진 것을 확인해 볼 수가 있다. 

 

(use "git rm --cached <file>..." to unstage)

위의 말은 git rm --cached를 이용해서 다시 Staging area에서 working directory로 옮겨갈 수 있다는 것을 알려준다.

만약 

git rm --cached * 

을 이용해서 전체 파일들을 전부 다 Staging area에서 제거를 하고 git status를 확인해보면 다시 untracked 된 상태로 a, b, c 파일들이 돌아오는 것을 확인해 볼 수가 있다.

 

git add *

git add 뒤에 * 을 붙혀서 입력하게되면 디렉토리에 있는 모든 파일들 즉 a, b, c가 Staging area로 옮겨가는 것을 확인할 수 있다. 

 

그런데 만약 여기서 del(rm) a.txt 처럼 a.txt 파일을 삭제하고, ls를 입력하면 현재의 working directory에는 a 파일이 없느는 것을 확인할 수 있다. 이 상태에서 git add * 을 한 다음에 git status를 확인해 보면 a파일을 삭제되어서 디렉토리에 없었기 때문에 git staging area에 추가되지 않은 것을 확인할 수 있다. 

 

이럴 경우에는 

git add .

을 쓰게 되면 모든 파일들을 포함해서 git Staging area에 추가를 해주는 것을 확인할 수 있다.

git add * 와 git add . 는 약간의 미묘한 차이가 있다.