본문 바로가기

Dev/Git

Git


목차

1. 일반 형상 관리툴과 차이점
2. 시나리오 분석
3. 기본 명령어 확인
4. conflict 예제 생성/해결/정리
5. 히스토리 보는 법
6. git 고급 기능 3가지
7. merge request 기능 확인
8. issue 기능 확인


## 1. 일반 형상 관리툴과 차이점

SVN : 중앙 서버에 소스코드와 히스토리를 저장
Git : 소스코드를 여러 개발 PC와 저장소에 분산해서 저장한다.

Git분산형 관리 시스템이다.
중앙 서버에 장애가 발생해도 로컬 저장소에 커밋을 할 수 있으며,

로컬 저장소들을 이용하여 중앙 저장소의 복원도 가능하다.

장점

SVN보다 속도가 빠르다.
또한, 소스코드를 주고 받을 필요 없이, 같은 파일을 여러 명이 동시에

작업하는 병렬 개발이 가능하다.
브랜치를 통해 개발한 뒤,

본 프로그램에 합치는 방식(Merge)으로 개발을 진행할 수 있다.



## 2. 시나리오 분석

2번_GIT_시나리오_분석



역할분담

S1 : 사원1 
D1 : 나 
D2 : 사원2
  • 위와 같이 역할 분담하여 시나리오 진행해보았습니다.
  • C3 push 시 conflict 오류 발생,

    git petch, git merge 후

    파일 수정하여 저장 후 다시 전송 -> push 성공


## 3-1 Git 기본 명령어

현재 git 버전 확인

git --version

새로운 저장소 초기화 하기

mkdir /path/newDir

cd /path/newDir

git init

전역 사용자명/이메일 구성하기

git config --global user.name "hoseong-lee"
git config --global user.email "ghtdjd2@naver.com"

전역 설정 정보 조회

git config --global --list

저장소별 설정 정보 조회

git config --list

파일 상태 확인하기 (커밋되지 않은 변경사항 조회)

git status

3-2 Git 기본적인 사용법

새로운 파일을 추가하거나 존재하는 파일 스테이징하고 커밋하기

git add 파일명
git commit-m"<메시지>"

파일의 일부를 스테이징하기

git add-p[<파일> [<파일>[기타 파일들...]]]

add 명령에서 Git 대화 모드를 사용하여 파일 추가하기

git add -i

수정되고 추적되는 파일의 변경사항 스테이징하기

git add-u [<경로>[<경로>]]

수정되고 추적되는 모든 파일의 변경사항 커밋하기

git commit -m"<메시지>"-a

작업트리의 변경사항 돌려놓기

git checkout HEAD <파일> [<파일>]

커밋되지 않고 스테이징된 변경사항 재설정하기

git reset HEAD <파일> [<파일>]

마지막 커밋 고치기

git commig -m "<메시지>" --amend

이전 커밋을 수정하고 커밋 메시지를 재사용하기

git commit -C HEAD --amend

파일 새로 추적하기

git add README

3-3 Git 브랜치

지역 브랜치 목록 보기
git branch

원격 브랜치 목록 보기

git branch -r

지역과 원격을 포함한 모든 브랜치 목록 보기

git branch -a

현재 브랜치에서 새로운 브랜치 생성하기

git branch <새로운 브랜치>

다른 브랜치 체크아웃하기

checkout <브랜치>

현재 브랜치에서 새로운 브랜치 생성하고 체크아웃하기

git checkout -b <새로운 브랜치>

다른 시작 지점에서 브랜치 생성하기

git branch <새로운 브랜치> <브랜치를 생성할 위치>

기존의 브랜치를 새로운 브랜치로 덮어쓰기

git branch -f <기존 브랜치> [<브랜치를 생성할 위치>]

브랜치를 옮기거나 브랜치명 생성하기

<새로운 브랜치>가 존재하지 않을 경우
git checkout -m <기존 브랜치> <새로운 브랜치>
<새로운 브랜치>가 존재하지 않을 경우
git checkout -M <기존 브랜치> <새로운 브랜치>
무조건 덮어쓰기

다른 브랜치를 현재 브랜치로 합치기

git merge <브랜치>

커밋하지 않고 합치기

git merge --no-commit <브랜치>

선택하여 합치기

git cherry-pick <커밋명>

커밋하지 않고 선택하여 합치기

git cherry-pick -n <커밋명>

브랜치의 이력을 다른 브랜치에 합치기

git merget --squash <브랜치>

브랜치 삭제하기

삭제할 브랜치가 현재 브랜치에 합쳐졌을 경우에만
git branch -d <삭제할 브랜치>
삭제할 브랜치가 현재 브랜치에 합쳐지지 않았어도
git branch -D <삭제할 브랜치>


-----------------------
## 4. conflict 예제 생성/해결/정리

  • conflict(충돌)merge를 할때 나타나는 충돌현상.

  • 같은 파일같은 부분각각의 branch에서 수정하고 merge하게 되면 충돌이 일어난다.
  • git status 명령을 통해서 conflict된 파일을 확인하고 파일을 열어 수정한다.
  • '<<<<<<< HEAD' 부터
    '======='
    사이의 구간이 현재 체크아웃된 파일의 내용이고
  • (master 브랜치의 소스코드)*
  • '>>>>>>> hoseong1' 사이의 구간이 병합하려는 대상인 hoseong1 브랜치의 소스코드이다.

    이 정보를 참고해서 두 개의 코드를 병합한 후 특수기호들을 제거하면 된다.
    작업이 끝나면 파일저장한다.

conflict_에러_수정


------------------------------------------
## 5. 히스토리 보는 법

git log
  • 특별한 아규먼트 없이 git log 명령 실행
  • 커밋 히스토리를 시간순*으로 보여준다.
  • 가장 최근의 커밋이 가장 먼저 나온다.
  • 그리고 이어서 각 커밋의 SHA-1 체크섬,
  • 저자 이름, 저자 이메일, 커밋한 날짜, 커밋 메시지*를 보여준다.

git_log


## 6. git 고급 기능 3가지

git tag
  • 커밋을 참조하기 쉽도록 알기 쉬운 이름을 붙임.
git commit --amend
  • 같은 브랜치 상에 있는 최종 커밋을 취소하고 새로운 내용을 추가하거나 설명을 덧붙인 커밋을 할 수 있음.
git revert
  • 이전에 작성한 커밋을 지움. 특정 커밋의 내용을 지우는 새로운 커밋을 만들어 지운 내역을 모든 사람이 알 수 있게 함.


-----------------------
## 7. merge request 기능 확인

  • develop branch에 개발된 사항mastermerge 하기 위해서는 개발자의
  • merge request*관리자의 승인이 필요하다.
  • git repository 좌측 메뉴 - merge requests 버튼 클릭
  • new merge request 클릭
  • source branch 에는 자신이 merge하려는 repositorybranch(develop) 선택
  • target branch merge 대상의 repository branch(master) 선택하여
  • Compare branches and continue 버튼 클릭


----------------------- ## 8. issue 기능 확인

  • Issue 란?
  • 프로젝트를 진행하면서 발생하는 모든 이슈*를 뜻한다. (버그 발생, 개발, 풀 리퀘스트 등..)
  • Issue 생성하기
    이슈는 유저의 이슈 사용이 허용깃헙 레포지토리에서 생성할 수 있다. (이슈를 사용 안하도록 설정할 수도 있다.)
  • 이슈는 현재 존재하는 풀 리퀘스트의 코드로도 생성할 수 있다.
  • 풀리퀘스트를 하고있는 파일을 View File을 한 후 코드를 선택해서 이슈를 생성*할 수 있다.
  • 또한, 하나의 이슈 또는 풀 리퀘스트의 리뷰에 있는 코멘트로부터도 바로 이슈를 생성할 수 있다.
  • 만약 업무의 우선순위와 추적을 위해 프로젝트를 사용하고 있다면,

    프로젝트 보드 노트를 이슈로 바꿀 수도 있다.

참고 사이트

누구나 쉽게 이해할 수 있는 Git 입문
https://backlog.com/git-tutorial/kr/stepup/stepup2_2.html

Git 사용법
https://www.zerocho.com/category/Git/post/581042fdcae2d100152ceae6