git 사용방법 - commit, log, diff, amend, remove, move, reset, checkout

|

패스트캠퍼스 웹 프로그래밍 수업을 듣고 중요한 내용을 정리했습니다.
개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.
이 포스팅에서는 git 사용방법에 대해 설명합니다.


1. setup

git.gitconfig파일에 전역 환경설정 내용을 저장하고 있다.

이 파일은 사용자의 홈 디렉토리에 있으며 사용자와 비밀번호 혹은 소스코 글자색상등을 수정할 수 있다.

1-1. 사용자설정 (User Configuration)

# git에서 사용될 사용자 설정하기
# 사용자 이름으로 설정하면 된다.

git config --global user.name "Park jihye"

# 이메일 주소도 사용자 본인의 것으로 설정하면 된다.
git config --global user.email "~@gmail.com"

# 그리고 우리는 에디터를 vim으로 설정한다.
git config --global core.editor vim

git의 설정사항을 확인하기 위해서는

git config --list

2. git 시작하기

이렇게 사용자 설정을 마치고 나면 git을 시작할 수 있다.

2-1. 내용 생성하기

버전관리를 받고싶은 컨텐츠를 생성

# 홈 디렉토리로 이동
cd ~/

# 저장소 폴더 생성
mkdir git

# 저장소 폴더로 이동
cd git

# 저장소 폴더에 새로운 폴더 만들기
mkdir basic

# 혹은
touch basic
# 이를 통해서 cd가 아닌 바로 해당 폴더로 이동을 할 수 있다.

# 파일 생성하기
touch test01
touch test02
touch test03
touch test04

# 파일 내 내용 추가하기
echo 'hello!' > test01
# hello 라는 문자가 test01 파일에 추가된다.

cat test01
# 저장된 파일내 작성된 글을 보여준다.

2-2. 저장소 생성하고 커밋하기

모든 git저장소는 .git폴더에 저장되어 잇으며 .git폴더는 사용자가 생성한 git폴더안에 있다. .git폴더는 저장소의 환경설정 정보와 저장소의 완벽한 히스토리 정보를 담고있다.

# git 저장소 생성하기
git init

# 모든 파일 저장소로 추가
git add -A

# 파일 하나만 추가하고 싶다면
git add test01

# git 저장소로 커밋하기 (첫번째 리비전 만들기)
git commit -m 'Initial commit'

# 혹은 vim을 이용해서 커밋메시지를 작성해도 된다.
# 다음에 vim에 대해서도 설명하겠다.

#로그 파일 보기
git log

2-3. diff 명령으로 차이점 확인하기

모든 파일에 변경을 가한 뒤, 차이가 생긴 부분들을 한눈에 보고 이를 저장소로 커밋한다.

# 파일 변경하기
echo "hello" > test02
echo "my name is" > test03
echo "Jihye" > test04

# 변경 사항들을 diff명령으로 확인하기
git diff

# 이때 diff명령은 staged 상태가 아닌 파일들만을 보여준다.
# 만약 staged 상태의 파일을 확인하고 싶다면
git diff --staged

2-4. Status, Diff 와 커밋 log

다음 명령들은 현재 상태(status)와 커밋 리스트를 보기 위한 것이다.

# 현재 저장소의 상태를 확인하기
git status

# 상태를 확인한경우 해당 파일의 색이 붉은 색으로 뜬다면
# modified 상태의 파일이기에 git add를 통해 staged 상태로 바꾸어줘야 한다.
# 만약 파일의 색이 초록색으로 뜬다면
# 해당 파일은 정상적으로 git add 되어 staged 상태가 된 것이다.

git status -u
# git status가 단순히 폴더의 상태만을 보여주는 거라면
# git status -u는 폴더 내 구체적인 파일들의 상태를 다 보여준다.

# 마지막 커밋한 내용과의 차이점을 확인하기
git diff

# 커밋한 히스토리 확인하기
git log

# 이때 git log -p는 그동안 내가 남긴 모든 기록을 다 보여준다.
# 즉 git log는 수정한 결과물에 대한 기록만을 보여준다면
# git log -p는 수정한 모든 사항을 다 로그기록으로 남겨 보여준다.

2-5. 커밋 메시지 수정하기

위 예제에서 커밋 메시지가 틀린경우 –amend 파라미터를 이용해 마지막 커밋 메시지를 바꿀 수 있다.

git commit --amend -m "now correct!"

단 이미 지나가버린 커밋에 대해서는 그 부분만 수정은 불가능하다.

만약 이미 한참전에 지나가버린 커밋 메시지를 수정하고 싶다면, 본인이 수정하고 싶은 커밋메시지 이후의 기록을 다른곳에 기록해 놓은 뒤 원하는 부분의 커밋메시지를 수정한 뒤 다시 이어 작성해야 한다.

그러니 반드시 커밋 메시지를 작성할 때 주의하도록 하자!

# 혹은 이전에 만들어 놓은 커밋 메시지에 빠뜨린 파일이 있었다면
# 우선 해당 파일을 git add ~ 하고

git commit --amend

2-6. 파일 삭제하기

rm teat01

2-7. 파일 이동하기

#test01 파일을 test02로 변경(이동)
mv test02 test03

2-8. 파일을 빼내오는 방법

git reset HEAD test02

이는 현재 모든 파일의 상태가 git add를 통해서 staged상태인데,

test02파일을 staged상태에서 modified상태로 변환해주는 것이다.

2-9. 전 단계로 돌아가기

git checkout -- test03

git diff를 통해 확인한 test03 수정사항을 수정하기 전 단계로 돌아가고 싶을 때 사용하는 것이다.

단, checkout의 명령은 조심해야한다

왜냐하면 checkout은 한번 사용하면 다시는 돌아갈 수 없기 때문이다. checkout을 사용한다는 것은 파일을 수정하기 전 단계로 다시 덮어쓴다는 의미이다. 따라서 이후의 수정된 내용은 다 사라지기 때문에, 수정한 내용이 정말 마음에 안들었을 경우에만 사용하도록 한다.

2-10. tag 만들기

git tag -a v1.0 -m 'v1.0이라고 한다'

더 나아가 이미 만들어 놓은 파일에 태그를 붙이고 싶은 경우

git log --oneline
# 이를 통해 얻은 로그번호를 복사하여

git tag -a v0.9 -m 'commit message!'
# 하면 된다

참고로 git log를 좀 더 자세히 보고 싶다면 (우리는 이후에 브랜치를 사용할 것이니까)

git log --oneling --all --graph