MAC에서 사용하는 간단한 GIT 사용법

     



 1. git 시작하기



일단 맥에는 Git이 자동으로 설치되어 있어서 따로 설치할 필요는 없습니다.


Git은 프로그래밍 문서뿐만 아니라 모든 파일의 버전을 관리 할 수 있기 때문에, 아무 파일로 간단하게 Git을 사용해 볼 수 있습니다. 


여기서는 간단하게 기능만 사용해보도록 하겠습니다.


일단 Git을 사용하기 위해서는 MAC의 터미널을 사용해야합니다. 터미널을 사용하지 않으신분들은 조금 힘들수 도 있겠네요. 리눅스를 많이 써보신 분은 쉽게 할 수 있습니다.


일단 터미널에서 특정 폴더를 만듭니다. 일반적으로 버전관리를 할 코드파일이 있는 폴더가 좋습니다. 프로젝트 폴더가 적당하겠네요.




Git을 시작하기 위해서는 Git 폴더를 만들어야 합니다. git init라는 명령어로 특정 폴더에 git을 사용할 수 있게 도와주는 폴더를 만들 수 있습니다. 현재 위치한 폴더에 .git이라는 폴더를 만들고 기본적인 뼈대 파일들을 생성합니다.




터미널에서 ls -all을 사용하시면 .git이라는 폴더가 생성된 것을 볼 수 있습니다. 이제 git을 활용할 준비가 되었습니다. git에다가 버전관리할 파일만 추가하면 됩니다. 파일 추가는 git add라는 명령어를 사용합니다.




git add는 크게 두 가지로 사용되는데


1. 관리할 새로운 파일을 추가할 때

2. 수정한 파일을 다시 등록할 때 (statged)


지금은 1번으로 사용했습니다. 2번을 설명하기 전에 Git의 파일 상태들을 알아야 합니다. Git은 파일의 상태를 Tracked와 UnTracked로 구분합니다. Tracked의 경우는 git add 명령어를 통해 새로 파일을 추가해 관리를 받고 있는 파일을 뜻하며, UnTracked는 그 반대입니다. Tracked는 Modified와 UnModified, Staged로 구성됩니다. Modified와 UnModified는 Tracking되고 있는 파일이 수정되거나 수정안된 상태를 나타내며 Staged는 수정이 끝나고 Commit할 준비가 된 파일을 뜻합니다. 즉 파일의 상태 변화는 Tracked -> UnModified -> Modified -> Staged -> Commit  순으로 진행됩니다. Commit이 되면 다시 UnModified로 돌아가서 반복됩니다.





다시 말하면 코드를 수정할 때 마다 git add를 통해 소스파일을 Staged 상태로 만들어야 하고, Staged상태에서 Commit을 해야 완벽하게 적용됩니다... 왜 사람들이 Git이 명령어가 많아 귀찮다고 하는지 조금은 알 것 같네요...


다시 돌아가서 파일을 추가했으니 Commit을 해봅시다.




명령어는 git commit입니다. commit을 하게되면 텍스트에디터가 열리게 되는데 commit에 대한 코멘트를 적을 수 있습니다.




vi에디터가 익숙하신분이면 쉽게 사용하시겠지만, 모르시는 분은 당황하실겁니다. 'i'를 입력하면 insert모드로 바뀌며 글을 입력할 수 있습니다. 다 입력하고 나면 :wq(저장후 종료)를 입력하시면 됩니다. 


입력칸 이번 commit에 무엇이 바뀌는지에 대한 설명이 나와있습니다. 위와 같은 경우는 파일이름 변경이 이번 commit 내용이군요.


따로 텍스트 에디터를 띄우지 않고 바로 commit하는 방법도 있습니다. git commit -m "this is test lolol"을 입력하면 위와 같이 에디터가 나오는 걸 생략할 수 있습니다.



 2. 파일 관리 git status, git diff, git log


현재 git의 상태를 보는 명령어는 git status 입니다.




commit을 하고 나서 git status를 입력한 화면입니다. stated파일이 없기 때문에 특별한 것은 안보이고, Untracked 파일 목록에 하나가 보이네요. 저건 제가 add를 안 했기 때문에 Untracked상태에 있습니다.


파일의 상태변화를 확인하기 위해 임의로 파일을 수정해보도록 하겠습니다.



파일을 수정한 후 다시 status 명령어를 실행했습니다. 이번엔 modified 목록에 nomalv.c가 있습니다. 수정은 했지만 git add로 등록을 하지 않았기 때문에 staged상태가 아닌 modified 상태입니다. 이제 git add를 통해 staged상태로 만들겠습니다.




차이가 보이시나요?

같은 modified이지만 staged상태로 저장되어 있습니다. commit할 준비가 되어있다는 것이죠. 참고로 staged인 상태의 파일을 다시 수정하게 되면 staged상태인 파일과 modified인 파일 두 가지가 존재합니다. git add의 경우 스냅샷을 찍는다는 의미이기 때문에 스냅샷을 찍고 파일을 수정할 경우 스냅샷의 내용과 다르므로 같은 파일이 두 가지 상태로 존재할 수 도 있습니다.





상태를 보는 것은 status로 확인 할 수 있지만 내용의 변경사항은 git diff으로 확인 할 수 있습니다. 




git diff의 경우는 staged와 modified를 비교합니다. 즉 누군가가 스냅샷을 저장한 파일과 현재 수정된 파일의 비교입니다. 이미 commit이 완료된 파일과 commit하기 전인 staged 파일을 비교하는 것은 git diff --staged입니다. 



commit의 히스토리를 보기 위해서는 git log를 사용하면 됩니다.



git log를 입력하면 가장 최근 commit부터 history가 나옵니다. 누가 언제 수정했는지에 대한 정보가 나오지만, 변경사항은 나오지 않습니다. 변경사항까지 보려면 git log -p를 입력하면 됩니다. 각 commit의 변경사항까지 전체를 보여줍니다.


git log는 유용한 옵션이 상당히 많은데, git log --oneline 으로 한줄로 볼 수 있고, --graph를 추가해 타임라인 형태로 볼 수 있다. 하지만 터미널의 한계라... 그렇게 가독성이 높지는 않다. git log를 좀더 효율적으로 사용하기 위해서는 따로 gui툴을 활용하면 된다. 아래는 Atlassian에서 제공하는 git gui툴인 source tree를 적용했을 때의 화면이다.




 


 3. 되돌리기


commit을 하다가 잘못했을 경우 되돌리기 기능이 필요하다. 일반적인 실수로 commit을 했는데 모르고 파일 하나를 빼먹어서 다시 commit을 하고 싶은 경우는 commit --amend를 입력하면 간단히 해결된다. 빠진 파일을 staged상태로 만들고 --amend를 추가해 commit하면 이전 commit이 다시 실행되며 새로 추가한 파일까지 같이 commit된다.


파일을 잘못해서 staged상태로 만들었다면 git reset HEAD <file1> ... 명령어로 되돌릴 수 있다. 이 명령어는 git status를 입력할 때마다 보이므로 쉽게 입력할 수 있을 것이다.


궁극적으로 지금 수정하고 있는 파일을 commit이 완료된 기존 버전의 파일로 바꾸고 싶은 경우가 있다. 이 경우에는 git checkout -- <file> 명령어를 사용한다. 이 명령어를 사용할 경우 현재 수정하고 있는 파일은 사라지고 기존 버전의 파일로 복원되기 때문에 상당히 위험한 명령어다.

반응형

댓글

Designed by JB FACTORY