Git을 이용한 프로젝트 생성
1 | (1) 로컬에서 시작할 때 |
기타 Git 사용시 유용한 명령어
1 | 1. vim 파일명 => vim 프로그램으로 파일 열기 및 생성 |
Git 명령어
1 | 1. commit |
Commit
커밋은 git 저장소에 여러분의 디렉토리에 있는 모든 파일에 대한 스냅샷을 기록하는 것입니다.
각 커밋은 저장소의 이전 버전과 다음 버전의 변경내역을 저장합니다.
그래서 대부분의 커밋이 그 커밋 위의 부모 커밋을 가리킵니다.
쉽게 말해 어떠한 작업을 마치고 변경된 파일 내용을 작업 단위별로 관리하기 위해 기록하는 행위 입니다.
커밋하기
(1) git commit -m “index.html 수정”
[d27b]
commit d27b8bb4d1f1949594592agbaskdjwkldsf
Author: JH wlgur278@gmail.com
Date: Sun Mar 10 11:32:17 2019 +0900
index.html 수정
(2) git commit -m “main.html 추가”
[d482]
commit d4828s8c89v9b999v0990cv9d9b900ds09d
Author: JH wlgur278@gmail.com
Date: Sun Mar 10 11:33:34 2019 +09000
main.html 추가
- d482 커밋의 부모 커밋은 d27b가 된다.
Branch
브랜치는 특정 커밋에 대한 참조에 지나지 않는다.
브랜치를 많이 만들어도 메모리나 디스크 공간에 부담이 되지 않기 때문에,
여러분의 작업을 커다란 브랜치로 만들기 보다, 작은 단위로 잘게 나누는 것이 좋습니다.
단순히 브랜치를 ‘하나의 커밋과 그 부모 커밋들을 포함하는 작업 내역’이라고 생각하면 됩니다.
브랜치 생성 및 삭제
git branch bugFix (현재 HEAD는 master)
=> 생성
git checkout -b bugFix
=> 생성과 동시에 HEAD옮기기
git branch –delete bugFix
=> 삭제
git branch -D bugFix
=> 브랜치에 commit이 남아 있을때 강제 삭제
git push origin :bugFix
=> 원격저장소의 브랜치 삭제
bugFix 브랜치
Checkout
HEAD 이동
- HEAD는 현재 작업중인 커밋을 가리킨다.
일반적으로 HEAD는 브랜치의 이름을 가리키고 있지만 특정 커밋을 가르키도록 이동시킬 수 있다.
git checkout 브랜치명
Merge
두 개의 브랜치를 합치는 작업을 merge라고 한다.
bugFix 브랜치를 master 브랜치에 merge
(현재 HEAD위치 master)
git merge bugFix
master 브랜치에 bugFix를 merge
(현재 HEAD위치 bugFix)
git merge master
bugFix 브랜치를 master 브랜치에 merge
Merge 그림
Rebase
브랜치 접목의 또다른 방법.
커밋들을 모아서 복사한 뒤, 다른 곳에 떨궈 놓는 것.
커밋들의 흐름을 보기 좋게 한 줄로 만들 수 있다는 장점이 있다.
저장소의 커밋 로그와 이력이 한결 깨끗해진다.
bugFix 브랜치를 master 브랜치에 merge
(현재 HEAD 위치 bugFix)
git rebase master
master 브랜치를 bugFix 브랜치에 merge
(현재 HEAD 위치 master)
git rebase bugFix
Merge vs Rebase
Merge
Rebase
- 상대 참조
1
2
3
4
5
6
7
8
9
10
11
12(1) 커밋의 해시를 사용하는 방법.
ex)
fed2dkakdfladsfjkl34k234lkjlksfkl23k 라는 커밋해시가 있다고 했을 때
fed2만 입력해도 인식한다.
(2) ^
한번에 한 커밋 위로 움직인다.
ex)
git checkout master^
(3) ~num
한번에 여러 커밋 위로 올라가는
git checkout HEAD~2
git branch -f master HEAD~3 => 브랜치 강제 옮기기 (HEAD에서 세번 뒤로 옮겨짐)
Reset
브랜치로 하여금 예전의 커밋을 가리키도록 이동시키는 방식으로 변경 내용을 되돌립니다.
애초에 커밋을 하지 않은 것처럼 예전 커밋으로 브랜치를 옮기는 것.
각자의 컴퓨터에서 작업하는 로컬 브랜치의 경우 리셋을 잘 쓸 수 있다.
하지만 다른 사람이 작업하는 리모트 브랜치에는 사용할 수 없다.
Revert
변경분을 되돌리고, 이 되돌린 내용을 다른 사람들과 공유하기 위해서는 revert를 사용한다.
Cherry-pick
합치고 싶은 커밋만 합친다.
합치고 싶은 커밋의 해시값을 알때 유용하다.
git cherry-pick
….
Interactive rebase
합치고 싶은 커밋의 해시값을 모를때 유용하다.
git rebase -i HEAD~4
Pull vs Fetch
Git 사용시 여러가지 에러
- git add 에러
1 | $ git add . |
CR(Carriage-Return)과 LF(Line Feed)
=> 윈도우는 CRLF
CR=> 현재라인에서 커서의 위치를 맨 앞으로 옮기는 동작
LF => 커서의 위치는 그대로 두고 종이를 한 라인 위로 올리는 동작
=> Mac과 Linux는 LF문자만 사용
.
=> Git은 커밋할 때 자동으로 CRLF를 LF로 변환해주고 반대로 CheckOut할 때 LF를 CRLF로 변환해 주는 기능이 있다.
git config –global core.autocrlf (true/input/false)
위 명령어로 에러 해결!
자세한 내용은 밑 url 참고
Git 이해하는데 도움되는 : Git