Git이란 소스코드를 효과적으로 관리하기 위해 개발된 '분산형 버전 관리 시스템'이다.. 

Git에서는 소스 코드가 변경된 이력을 쉽게 확인할 수 있고, 특정 시점에 저장된 버전과 비교하거나 특정 시점으로 되돌아갈 수도 있다.

Git은 3단계의 작업으로 진행된다.

1. 로컬 저장소(Working directory)에는 개인의 실제 작업 파일이 있는 저장소이다.

2. 인덱스(Index)는 준비 영역(staging area)으로 임시 작업 공간이다.

3. HEAD는 최종 확정된 소스파일을 서버에 업로드(commit)하여 발행(push)하게 된다.

 

 

1. Git Bash 를 실행한다.

 

2. GIT 폴더 생성과 폴더 이동

$ mkdir xe.git

 

# 폴더 내용 확인시 (숨김파일 출력시 - a, 리스트 형태 - l )

$ ls -al

 

# 폴더 이동

$ cd /xe.git

 

# D 드라이브 이동할 경우

$ cd /D

 

# 네트워크 이동할 경우

$ cd //192.168.100.11

 

3. 파일 생성 및 편집

$ vim 파일명

# 새로운 내용을 추가하거나 편집할 경우, 키보드에서 i 키를 누르면 INSERT 모드로 전환된다.

# INSERT 모드 종료 - ESC 키

# 저장 및 종료 - :wq

 

# 파일 삭제

$ rm 파일명

 

# 파일 복사

$ cp 파일명 복사경로

 

4. GIT 초기화

$ git init

 

5. GIT 사용자 등록

$ git config --global user.name 아이디

$ git cofnig --global user.email 이메일

$ git config --list

 

6. GIT 상태 확인

$ git status

 

7. GIT STAGE에 등록 

## 모든 파일과 폴더 등록됨(보안이 필요한 파일이 폴더에 있을경우 함께 등록될수 있음)

$ git add .

 

## gitignore 에 등록된 경우에도 강제로 등록 및 추적을 시작함

$ git add 파일명 -f

 

## 대화식으로 추가할 경우

$ git add -i

 

8. 저장소 받아오기

$ git clone 저장소/경로

 

8. GIT 커밋

$ git commit -m "메세지"

 

9. GIT 등록과 커밋을 한꺼번에 수행할 경우

$ git commit -am "메세지"

 

10. GIT 로그

$ git log

$ git log -p

$ git log 식별자

 

11. 커밋된 소스 코드의 변경된 차이점 확인할 경우

$ git diff

$ git diff 식별자..식별자

 

12. 이전의 커밋된 버전으로 복원해야할 경우

$ git reset HEAD^

$ git reset HEAD~2

$ git reset 식별자 --hard

 

13. 파일 삭제

$ git rm -rf [경로/파일명]

 

14. 푸시(강제)

$ git push origin master -f -u

$ git push origin <브랜치(가지) 이름>

$ git remote add origin <원격 서버 주소>

 

15. 로컬저장소 갱신

$ git pull

 

저장소를 새로 만들면 기본으로 master 가지가 만들어진다.

다른 가지를 이용해서 개발을 진행하고, 나중에 개발이 완료되면 master 가지로 돌아와 병합할 수 있따.

16. 브랜치 확인

$ git branch

 

17. 브랜치 생성

$ git branch 브랜치이름

 

18. 브랜치 전환(체크아웃)

$ git checkout 브랜치이름

# 브랜치 생성하고 전환을 한번에 수행할 경우 -b 옵션 사용

$ git checkout -b 브랜치이름

 

19. 브랜치 삭제

$ git branch -d 브랜치이름

# 병합하지 않은 브랜치를 강제 삭제할 경우

$ git branch -D

 

20. 브랜치 정보확인

# 모든 브랜치 확인할 경우

$ git log --branches --decorate --graph --oneline

 

# 브랜치간에 차이점을 비교할 경우(master에는 없고, A브랜치에 있는 것을 출력한다)

$ git log master..A브랜치

 

# 소스코드까지 비교할 경우

$ git log -p master..A브랜치

 

# 브랜치 소스 코드 비교할 경우

$ git diff master B브랜치

 

21. 브랜치 병합

master 브랜치로 A브랜치를 병합할 때 (master <- A )

$ git checkout master

$ git merge A

 

22. 병합과정중 충돌시

$ git add <충돌난 파일명> 

$ git rebase --continue

 

23. stash

커밋하지 않은 작업중인 디렉토리의 변경사항을 임시로 숨겨줄 때

$ git stash

$ git stash save

$ git status

 

# 임시 작업의 목록을 확인할 때

$ git stash list

 

# 감춰진 임시 작업에서 최근 작업을 다시 복원 할경우

$ git stash apply

 

# 최근 임시 작업을 삭제할 경우

$ git stash drop

 

# 복원과 드랍을 한꺼번에 수행할 경우

$ git stash pop

 

24. 태그 추가

$ git tag 1.0.0 식별자

 

25. 변경 내용 복원

$ git checkout -- <파일 이름>

$ git fetch origin

$ git reset --hard origin/master

 

26. 리모트 등록과 발행

# 로컬(origin)의 내용을 원격저장소 GIT이 설치되어 있는 경로에 등록한다.

$ git remote add origin ssh://접속아이디@192.168.100.25:44220/volume1/DATA/xe.git

 

# 연결 확인

$ git remote -v

 

# 변경 내용 발행 - origin(로컬)을 원격 master 브랜치에 발행

$ git push --set-upstream origin master

 

# 갱신 - 로컬저장소에 원격저장소의 내용을 가져오기

$ git pull

 

# 복제할 경우 - 원격저장소의 내용을 로컬폴더로 복제

$ git clone ssh://접속아이디@192.168.100.25:44220/volume1/DATA/xe.git 로컬폴더명

 

27. 자주 사용하는 명령어 정리

$ git branch ## 로컬 branch 확인

$ git branch -r ## 서버 branch 확인

$ git checkout -b TEST ## 브랜치를 만들고 바로 이동

$ git branch -d(D) TEST ## 브랜치 삭제

$ git status ## 현재상태(머지나 추가사항) 확인

$ git add 경로 ## 에러를 해결하고 추가하여 에러해결

$ git stash ## 임시저장

$ git stash pop ## 임시저장한파일 불러오기

$ git remote prune origin ## 깃랩에서 삭제한거 서버와 동기화

$ git push origin :TEST ## 서버에서 삭제하기

$ git remote 

$ git push origin TEST

$ git config http.postBuffer 104857600 ## git오류시 해결

$ git merge --squash TEST

$ git clone 주소

$ git remote set-url origin 주소 ## gitlap 저장소 변경시 설정

$ git remote -v ## gitlap 저장소 주소 확인

$ git checkout master

$ git checkout --orphan TEST

$ git rm -rf .

$ git push origin TEST

$ git clean -d -n  ## 미등록된 파일 삭제

$ git clean -d -f

$ git clean -d -i