VCS(Version Control System)
협업도구
git을 배우는 것은 일하는 방식을 배우는 것.
Local Repository - 개인
Remote Repository - 협업
> git add 파일이름 //Staging Area에 파일 추가
//gitTest폴더에 숨겨진 폴더 .git이 생김(Local Repo).
//이력이 Local Repo에 쌓임.
c:\gitTest> git init
git config --global user.email "tone8943@gmail.com"
git config --global user.name "Robert0623"
git config --global --list //설정 확인
git --help //도움말
git commit -h //특정 명령어 도움말
Working Directory -->(add) Staging Area -->(commit) Local Repository
//Staging Area는 장바구니 개념
- 도움말 보기
>git 명령어 -h //명령어에 대한 도움말
>git 명령어 --h //자세한 도움말
>git --help //모든 도움말
- Staging Area에 추가
>git add 파일이름
>git add 파일이름1 파일이름2
>git add 폴더이름 //지정된 폴더 내의 모든 파일 추가
>git add * //현재 폴더에 있는 모든 파일, 폴더 추가(빈 폴더 제외)
>git add -u //커밋한 적이 있는 모든 파일 추가(해당 파일이 커밋 이력에 있어야함)
- Staging Area에서 삭제
>git rm --cached 파일이름
>git reset 파일이름
>git reset //현재 폴더의 모든 폴더와 파일을 StaingArea에서 삭제
- Working Directory와 Staging Area의 상태를 확인
>git status
[주의] 파일을 삭제할 때, Working directory에서 직접 삭제하지 말고, git을 통해 삭제해야 이력이 관리됨.
>git rm aaa.txt
>git commit -m 'delete aaa.txt' //삭제 이력을 남기기 위한 커밋
- 커밋 생성하기
>git commit -m "initial commit" //""안에 커밋에 대한 설명을 적는다,
>git show HEAD //최근 커밋에 대한 상세 정보를 보여준다.
>git log
- 커밋 수정하기 --> 새로운 커밋 생성(이력이 추가됨)
>git commit --amend //최근 커밋의 내역을 볼 수 있다.(커밋 메세지 수정가능)
>git commit --amend -sm "변경된 메세지" //커밋 메세지만 수정하고 싶을 때
- 취소 커밋 생성하기 --> 새로운 커밋 생성(이력이 추가됨)
>git revert HEAD //최근 커밋을 취소하는 새로운 커밋을 생성.
[참고] git commit --amend는 아무것도 변경 안해도, 커밋 ID가 달라진다. git reflog로 확인 가능.
- 파일 추가
reset --soft를 입력하면,
로컬 리포에 있던 것이 staging area로 돌아가고
working directory에서 statging area로 파일 추가 후 커밋
- 파일 삭제
reset --soft를 입력.
reset 파일이름 입력으로 Staging area의 파일 제거.
커밋.
- 커밋 2개 합치기
reset --soft를 2번 하면,
Staging Area에 2번 분량의 커밋한 내용이 올라가고,
그 다음 커밋하면 된다.
[참고] 커밋의 범위를 정해서 그 규칙에 따라 커밋 해야한다.
읽기, 쓰기 또는 연관된 읽기+쓰기 등.
head는 현재 보고있는 commit된 working directory.
commit으로 이력을 만들어 놓고, head를 옮겨서 이력 사이를 왔다갔다 할 수 있음.
reset --hard
reset --hard "커밋ID" //커밋ID를 알아야 함.
커밋은 자기 이전 커밋을 가리키고 있음.
tracked file - git관리
untracked file - git관리X
- add, commit 하기
워킹디렉토리에 aaa.txt를 생성하고,
> git add aaa.txt //작업 디렉토리에서 SA(StagingArea)에 추가
> git reset aaa.txt //SA에서 aaa.txt제거
> git add aaa.txt
> git commit -m "add aaa.txt" //커밋 + 메세지
> git log //커밋 아이디를 볼 수 있음. 앞에서 7자리만 써도 구별 할 수 있음.
> git log --oneline //내용을 요약
//파일 2개 add, commit
> git add bbb.txt
> git commit -m "add bbb.txt"
> git add ccc.txt
> git commit -m "add ccc.txt"
- HEAD 이동
> git reset --hard 커밋ID //해당 커밋ID로 HEAD를 이동
> git reset --hard HEAD~1 //바로 이전 커밋으로 HEAD를 이동
> git reset --hard HEAD~2
> git reflog //HEAD를 옮긴 이력이 나옴.
- 커밋 합치기
//2개의 커밋된 파일을 SA로 보낸다.
> git reset --soft HEAD~1
> git reset --soft HEAD~1
//커밋하면 하나의 커밋으로 합쳐진다.
> git commit -m "add bbb.txt ccc.txt"