Git 사용법

김지현·2021년 11월 30일
0

개발환경

목록 보기
1/1
  1. Git 사용 목적
    Git은 분산 버전관리 시스템(:= 소스코드 관리시스템), 여러 사람이 협동 작업하는 환경에서 문서 변경사항을 관리하는 시스템

  2. Git 특징
     변경사항을 적절히 저장했다가 필요한 시점으로 돌릴 수 있다. (git reset, git revert)
     서로 다른 변경사항들을 쉽게 합칠 수 있는 기능을 제공한다. (git merge, git pull)
     저장소가 로컬(내 컴퓨터)에 있어 네트워크가 끊어져도 작업 가능하다.
     원격저장소를 연결해 협동작업이 가능하다. (git pull, git push, etc)
     변경사항을 관리할 대상을 스테이지(stage)를 이용해 관리 가능하다. (git status, git add)

  3. Git의 영역
     작업 폴더(Working Directory)
    ㄴ. 사용자가 변경하는 실제 파일이 들어가는 폴더
     스테이지(Stage, Index)
    ㄴ. 변경사항을 관리할 파일들을 리스트
     변경이력(History)
    ㄴ. 커밋(Commit)이라 불리는 변경사항 묶음과 커밋들의 연결 관계.

[출처 : https://parksb.github.io/article/28.html]

 원격 저장소(Remote repository) : 일반적으로 GitHub, GitLab 또는 BitBucket과 같은 호스팅 서비스에서 호스팅된 저장소.
 로컬 저장소(Local repository) : 컴퓨터의 로컬 환경에 위치한 저장소.
 작업 디렉토리(Working directory) : 실제 파일이 위치한 디렉토리
 인덱스 영역
ㄴ. 스테이징(Staging) : 확정할 변경 사항을 준비시키는 것.
ㄴ. 인덱스(Index) : 확정할 준비가 된 변경 사항들이 모인 영역.
 임시 FETCH_HEAD
fetch를 실행하면 원격 저장소의 내용을 로컬 저장소로 가져오며, 임시로
FETCH_HEAD라는 이름의 브랜치를 만든다.
(git checkout FETCH_HEAD 명령으로 원격 저장소에서 가져온 업데이트를
확인할 수 있다.)

  1. 로컬저장소와 원격저장소
     협업을 위해서는 원격저장소가 필수적
     로컬저장소와 원격저장소 간에 이력을 주고받을 수 있음.
     원격저장소가 여러 개 일 수 있음.

  2. Git 명령어
    [상태 확인 단축키]
    git status 현재, track 되어진 파일 목록 확인.
    git remote -v 원격 연결된 저장소 확인
    git branch -a 현재, 브랜치 리스트 보기
    git log 저장소 히스토리를 검토
    git reflog 저장소를 다운로드 받은 이후의 히스토리
    git remote show origin 리모트 저장소의 구체적인 정보를 확인할 수 있다.

[소스코드 download 및 업데이트]
git fetch 원격 서버에 저장된 내용을 다운로드 받기.
git pull 원격 서버에 저장된 내용을 다운로드 받기. 자동으로 merge 작업 진행. 작업 공간과 merge
git push 연결된 원격 서버에 소스코드 업데이트
git push origin dev1 원격 저장소에 master 브랜치를 추가하기. 있을 시 , merge

[사용자 정보 등록]
git config –global user.name “이름” Commit 진행 시, 등록될 사용자 이름 등록
git config –global user.email “이메일 주소” Commit 진행 시, 등록될 사용자 이메일 등록

[branch 관련 명령어]
git branch 를 생성.
git branch -d 를 삭제.
git checkout branch 이름 해당 branch로 이동.

[소스코드 저장 관련 명령어]
git add filename(s) 특정 파일만 준비 영역으로 보내 커밋 준비를 한다.
git add --all 모든 수정사항과 새로운 파일을 저장소 준비 영역에 추가한다.
git commit -m “message” 모든 준비 영역의 파일을 저장소에 커밋한다.

[git 추가 명령어]
git tag -m “Tag version 1.0” Tag는 release를 나누는데 사용된다. 색인표처럼 해당 커밋 부분으로 갈 수 있다.
git tag -am “comment” “tag name” 주석이 달린 태그를 추가할 수 있다.
git tag -d 태그를 삭제한다.
git rm git에서 관리를 하지 않겠다고 선언하는 것이다.
git grep git history에서 사용되는 부분을 찾을 수 있도록 한다.
git diff commit1 commit2 Commit1과 commit2를 비교해서 보여준다.

  1. Git 명령어 활용
    작업 진행 하기전에 git pull를 하여 최신 소스코드로 업데이트를 진행한 이후 작업을 진행한다.
    [기본적인 작업 진행]
    git pull 원격 서버에 저장된 내용을 다운로드 받기. 자동으로 merge 작업 진행. 작업 공간과 merge
    git status 현재, track 되어진 파일 목록 확인.
    git add filename(s) 특정 파일만 준비 영역으로 보내 커밋 준비를 한다.
    git commit -m “message” 모든 준비 영역의 파일을 저장소에 커밋한다.
    git push 연결된 원격 서버에 소스코드 업데이트

[branch 생성 후, 원격 서버에 등록]
git pull
or git pull origin dev1 원격 서버에 저장된 내용을 다운로드 받기. 자동으로 merge 작업 진행. 작업 공간과 merge
git branch 를 생성.
git remote show origin 리모트 저장소의 구체적인 정보를 확인할 수 있다.
git push origin dev1 원격 저장소에 master 브랜치를 추가하기. 있을 시 , merge

[tag 생성 및 tag로 이동]
git tag -m “Tag version 1.0” Tag는 release를 나누는데 사용된다. 색인표처럼 해당 커밋 부분으로 갈 수 있다.
git tag -am “comment” “tag name” 주석이 달린 태그를 추가할 수 있다.
git checkout tags/원하는 태그 원하는 태그로 이동.

[상황별 방금 한 동작 변경 및 취소]
git reset test.txt git add test.txt 명령으로 파일을 스테이징 한 이후,
git reset test.txt 명령을 사용하면 파일을 언스테이징 할 수 있다.
git reset –soft HEAD^ 헤드를 옮겨 마지막 커밋을 취소한다. –soft 옵션은 작업 디렉토리와 인덱스를 보존해 파일이 스테이지된 상태를 유지하도록 한다.

git commit –amend -m “comment” 직전 커밋의 메시지를 “comment” 내용으로 수정한다.
git rm –cached setting.txt 원격 저장소에 올라간 파일 setting.txt를 삭제한다. –cahed 옵션은 인덱스에서만 파일을 삭제한다는 의미
[git 저장소 만들기]
cd /home/user/my_project Git 저장소를 만들고자 하는 디렉토리에 접근한다.
git init .git 이라는 하위 디렉토리를 만든다.
(저장소에 필요한 뼈대 파일)
git add 파일명 파일명을 Staging 영역으로 추가를 한다.
git commit -m “comment” Comment를 주석으로 달고, commit 실행.
.gitignore 아래 8번 chapter에서 .gitignore 파일을 생성하여 넣어 주기.

[포크한 로컬 저장소를 최신으로 유지하기]
git remote add upstream “주소” 원격 저장소를 업스트림이라는 이름으로 추가한다.
git remote -v remote 저장소에 잘 추가되었는지 확인한다.
git fetch upstream upstream 저장소를 최신화를 해준다.
git checkout master master branch 로 변경을 한다.
git merge upstream/master Upstream의 mater branch 내용을 merge를 해준다.

  1. Git 사용 규칙
    Git은 소스관리시스템
    Git을 소스관리시스템(:= 백업 장소)으로 이해한다. 따라서 소스코드의 관리를 용이하게 하기 위해서는 커밋을 잘 할 수 있도록 한다.

근거 없는 커밋은 하지 않는다.
커밋에는 근거가 있어야 한다. 새로운 기능 개발, 결함의 수정, 리팩토링이나 소스코드 개선, 테스트 코드 추가 등 소스 코드를 추가/수정한 후, 커밋에는 반드시 관련한 이슈, 일련 번호를 메시지에 작성하자.

[commit 예시 / 오픈소스 사용방식]
issue 번호 번호(revision 번호)
[공백 줄]
3 ~ 5줄 관련된 내용.

위와 같이 진행하는 방식은 issue tracker를 사용하기 위한 방식이다. 만약 사용하는 프로젝트에 목적에 따라 커밋 방식을 바꿀 수 있다.

  1. gitignore
     프로젝트 작업시 로컬 환경의 정보나 빌드 정보등 원격 저장소에 관리하지 말아야되는 파일들에 대해서 지정하여 원격 저장소에 실수로 올라가지 않도록 관리하는 파일.
     정의한 정보들에 해당하는 파일들에 대하여 git track하지 않도록 설정하는 역할을 한다.

profile
아는것을 잘 설명하고 싶은 SW엔지니어

0개의 댓글