Git 명령어와 브랜치
리누스 토발즈
1) 리눅스의 창시자
- 1991년 취미로 개발
2) Git의 창시자
Git
1.리눅스 프로젝트에서 사용하던 Bitkeeper가 상용화 (2주만에)
1) 2005년 Git 탄생
2) 커뮤니케이션
3) VCS ( Version Control System ), DVCS ( Dostributed Version Control System )
- 데이터의 과거와 현재 상태 관리하는 것
- 복수의 사람들이 사용하는 것임
4) 동시 다발적인 브랜치 작업
5) 대중성, 검증된 안정성
6) 왜? 쓰냐?
- 협업
7) 협업 시 서로 간에 상태를 똑같게 유지하는 기능
GitHub
1) Git 기반
2) 프로젝트 호스팅 사이트
3) 2008년 2월 서비스 시작
Bash 명령어
-
git config –list (목록)
-
git config –global user.name user.email 이름이나 이메일 지정 - pwd 위치!
- cd.. 상위
- ls 리스트
- clear 깨끗하게하기
- vim HelloWorld!.java –> java파일 하나생김
- 나갈때는 insert-> i :wq 누르면 저장됨
- ls -a 상위폴더 안나타나고 현재 파일만 보임
-
ls -al 시간까지
- cat Helloworld.java - 파일 내용 보여줌
Git 장점
1) 이력 기록 및 추적
2) 원격 저장소 및 공유
3) 변경 이력 병합
기본 명령어
1) 저장소(Repository) 생성
- git init
- 실행한 위치 Git 저장소로 초기화
2) vim
- 리눅스, UNIX 에서 사용할 수 있는 텍스트 편집기
- i 키 누름
- 일반 모드 -> 입력 모드 전환됨.
- Esc 키 누름
- 입력 모드 => 일반 모드 전환됨.
- : 키 누름
- 명령 모드 전환됨( 명령어 입력 가능)
- wq (저장, 종료)
3) 저장소 상태 확인
-git status
4) 저장소에 파일 추가
- git add 파일 이름
- 해당 파일 Git이 추적할 수 있게 추가함.
- 파일 기록 추적하도록 추가. ### 5) 저장소에 수정 내역 제출
-git commit
- commit(커밋) : '의미'를 가질수 있게 되는 최소한의 단위
- 변경된 파일 저장소에 제출
6) 커밋 로그를 조회하는 명령어
- git log
- git log -p
- patch
- 파일 단위에서 변경 내용을 보여줌.
- git log -[숫자]
- 최근 몇개의 커밋을 보여줄지 지정함
- git log --status
- 갓 커밋의 통계 정보 볼수 있음.
- 어떤 파일이 수정되었고, 각 파일에서 몇 줄이추가, 삭제되었는지 의미함.
- git log --pretty=oneline
- 각 커밋을 한 줄로 보여줌
- git log --pretty=oneline --graph
- 여러 브랜치를 생성하고 병합하는 작업을 가시적으로 그래프적으로 표시함.
7) 브랜치 병합
- git merge 브랜치이름
- 현재 작업 중인 브랜치에 '브랜치이름'의 브랜치를 끌어와 병합함
깃 작업 트리 (working tree)
1) 작업 디렉터리(Work Directory)
- 실제 작업 중인 파일들이 존재하는 영역임.
- 파일 생성, 기존 파일을 수정
2) 스테이징 영역(Staging Area)
- 작업 디렉토리에서 작업 중인 파일 중 깃이 추적하는 파일들을 식별하는 영역
- 실제로는 .git 숨김 폴더 내부의 index 파일에서 추적하는 파일들을 식별하고 있다.
3) 지역 저장소(Local Repository)
- 스테이징 영역에서 추적되는 파일아 커밋으로 등록되는 영역임.
- 스테이징 영역의 파일 혹은 파일들이 하나의 변경 단위인 커밋으로 등록되는 과정임.
git add 명령으로 스테이징 영역에 파일이 추가됨
1) Stage : 커밋으로 기록할 수 있는 최종 상태
- Tracked 상태와 Unmodified 상태
2) UnStage : 스테이징 영역에 있지만, 파일에 변화가 있는 상태
- 커밋으로 기록할 수 있는 상태가 아님
새로운 브랜치 생성 및 이동
0) 브랜치 (branch)
- 프로젝트 기준 코드인 main 브랜치로부터 독립적인 작업 공간을 만들어주는 기능
- 여러 개발자가 서로 다른 버전의 코드를 만들때 서로의 작업에 영향을 주고받지
않기 위해 필요함.
1) 저장소에 브랜치 추가
- git branch 이름
2) 작업중인 브랜치 변경
- git checkout 브랜치이름
3) 충돌 발생
- 각 브랜치가 하나의 파일 동시에 수정하는 경우 생김.
- Conflict 해결해야함.
- 병합하면서 생기는 충돌은 해결 해야함.
- 병합 실패한 코드에서 내용 확인
- 충돌 발생 부분 시작 표시
- <<<<<<<<<<<<<<HEAD
- 충돌 난 부분 끝 표시
- >>>>>>>>>>>>>>ezen
- 경계 표시
- =============
4) 병합 실패한 경우의 내용 확인
- 수동으로 충돌 해결해야 함.
- 충돌 난 두 브랜치 중 하나 내용 선택
- 두 수정 내역 합침.
- 충돌 난 부분 어떤 의미인지 이해하고 있어야 해결 가능.
댓글남기기