git 사용방법 - commit, log, diff, amend, remove, move, reset, checkout
16 May 2018 | git패스트캠퍼스 웹 프로그래밍 수업을 듣고 중요한 내용을 정리했습니다.
개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.
이 포스팅에서는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