나의 지식 보관소
Git 버전 만들기 본문
파일의 상태 확인하기
파일의 상태를 확인 하려면 보통 $ git status 명령을 사용한다.
좀더 간단한 상태를 보고 싶다면 $ git status -s 처럼 옵션을 주면 된다.
$ git status -s
M README
MM Rakefile
A lib/git.rb
M lib/simplegit.rb
? ? LICENSE.txt
-s 옵션을 주게 되면 파일 이름 옆에 기호가 붙어서 상태를 표시해주게 되는데,
아직 추적하지 않는 새 파일에는 ?? 표시가, Staged 상태로 추가된 파일중 새로 생성된 파일에는 A 표시가, 수정된 파일 앞에는 M 표시가 붙는다. 그리고 상태정보 칼럼을 보면 두개가있는데 왼쪽에는 Staging Area에서의 상태를, 오른쪽에는 Working Tree에서의 상태를 표시한다.
README 파일 같은 경우 내용을 변경했지만 아직 Staged 상태로 추가하지는 않았다. lib/simplegit.rb 파일은 내용을 변경하고 Staged 상태로 추가까지 한 상태이다. 위 결과에서 차이점을 비교해보자. Rakefile 은 변경하고 Staged 상태로 추가한 후 또 내용을 변경해서 Staged 이면서 Unstaged 상태인 파일이다.
파일을 Staged 상태로 만들기
Git에서 버전을 만들때 Staged 상태인 파일들만 커밋되기 때문에,\ 먼저 버전으로 만들고 싶은 파일을 Staged 상태로 만들어야한다. 그러기 위해서는 $ git add <filename> 명령을 사용하면된다. filename이 만일 디렉토리라면 디렉토리 아래의 모든 파일들을 재귀적으로 추가한다.
만일 어떤 파일을 Staged 상태로 만들어두고 커밋하지 않은 상태로 그 파일을 수정하게되면 $ git status 명령을 실행했을 때 해당 파일은 Staged이면서 Unstaged 상태가 된다. 이런 상태에서 커밋을 진행하면 커밋을 실행하는 시점의 버전이 커밋 되는것이 아니라 $ git add 명령을 실행했던 시점의 버전이 커밋된다. 그러므로 만일 $ git add 후 파일이 또 수정되면 $ git add 명령을 다시 실행해주어야 한다.
변경사항 커밋하기
$ git commit 명령을 실행하면 Staging Area의 파일들이 커밋된다. $ git commit 명령을 실행하면 Git설정에 지정된 편집기가 실행되고 커밋메세지를 작성하면 커밋이 완료된다. -m 옵션을 주면 커밋 메세지를 인라인으로 첨부할 수도 있다.
파일 무시하기
로그파일이나, 빌드 시스템이 자동으로 생성한 파일 처럼 Git이 관리할 필요가 없는 파일들이 있다. 그런 파일들을 무시하려면 .gitignore 파일을 만들고 그 안에 무시할 파일 이름 패턴을 적으면 된다.
.gitignore 파일에 입력하는 패턴은 아래 규칙을 따른다.
1. 아무것도 없는 라인이나, `#`로 시작하는 라인은 무시한다.
2. 표준 Glob 패턴을 사용한다. 이는 프로젝트 전체에 적용된다.
3. 슬래시(/)로 시작하면 하위 디렉토리에 적용되지(Recursivity) 않는다.디렉토리는 슬래시(/)를 끝에 사용하는 것으로 표현한다.
4. 느낌표(!)로 시작하는 패턴의 파일은 무시하지 않는다.
변경내용 보기
$ git diff 명령을 실행하면 Working Directory에 잇는 것과 Staging Area에 있는 것을 비교한다.
커밋하려고 Staging Area에 넣은 파일의 변경 부분을 보고 싶을땐 $git diff --staged 옵션을 사용하면 저장소에 커밋한것과 Staging Area에 있는것을 비교해준다.
Staging Area 생략하기
Staging Area는 매우 유용하지만 복잡하고 쓸데 없을때가 있다. 이런 때에 $ git commit 명령을 실행할 때 -a 옵션을 추가하면 Git은 Tracked 상태의 파일을 자동으로 Staging Area에 넣는다.
파일 삭제하기
Git에서 파일을 제거하려면 $ git rm 명령으로 Staging Area에서 삭제한 후에 커밋해야한다. 또한 이명령은 워킹 디렉토리에 있는 파일도 삭제하기 때문에 실제로 파일도 지워진다.
만일 Git 명령을 사용하지 않고 단순히 워킹 디렉토리에서 파일을 삭제하면 Unstaged상태가 된다. 반면 $ git rm 명령을 실행하면 삭제한 파일은 Staged 상태가 된다. 이후 커밋하면 파일은 삭제되고 Git은 이 파일을 더이상 추적하지 않는다.
만약 이미 파일이 수정되었거나 Staging area에 추가 했다면 -f 옵션을 주어 강제로 삭제해야한다. 이는 Git은 커밋하지 않은 데이터는 복구할수 없기 때문에 있는 안전장치다.
또 Staging Area에서만 제거하고 워킹 디렉토리에 있는 파일은 남겨둘 수 있다. 즉 하드디스크에 있는 파일은 가만히 둔채 Git만 추적하지 않게 하는것이다. 이것은 .gitignore 파일에 추가하는 것을 빼먹었거나 대용량 로그 파일이나 컴파일된 파일인 .a를 실수로 추가했을 때 쓴다 --cached 옵션을 사용하여 명령을 실행한다.
파일 이름 변경하기
$ git mv 명령을통해 파일의 이름을 변경해줄 수 있고, 이명령은 아래 명령어를 수행한것과 완전 같다. 즉 $ git mv는 일종의 단축 명령어이다.
$ mv README.md README
$ git rm README.md
$ git add README
'Git' 카테고리의 다른 글
Git 되돌리기 (0) | 2020.04.23 |
---|---|
Git 커밋 히스토리 조회 (0) | 2020.04.23 |
Git 파일의 상태 (파일의 생명주기) (0) | 2020.04.20 |
Git 저장소 만들기 (0) | 2020.04.20 |
Git 최초 설정 (0) | 2020.04.19 |