KIM KYUREE

Front-end Developer

git 프로젝트를 시작하는 방법

DEV-LOG/ETC

git 프로젝트를 시작하는 방법은 github를 기준으로 설명합니다.

git을 프로젝트에서 사용하는 방법은 2가지가 있다.

첫 번째는 내 컴퓨터(local) 환경에서 폴더를 만들고 git을 설치해서 시작하는 방법이고, 두 번째는 github에서 repo를 만들고 내 컴퓨터(local)에 clone 하여 진행하는 방법이다.

내 컴퓨터(local)에서 프로젝트를 시작하는 방법

  1. 내 컴퓨터(local)에서 프로젝트 폴더를 만든 뒤 해당 폴더에서 진행함
  2. $ git init
    → 지금부터 이 폴더에서 (이 폴더 아래로) git을 사용하겠다.
  3. $ git remote add origin (git repo 주소)
    프로젝트 폴더와 git repo를 연결함

git 기본 설정! git bash에서

$ git config --global user.name "user name"
$ git config --global user.email "user email addr"
$ git config --global core.editor "vim"
$ git config --global core.pager "cat"

github에서 repository 만들어서 시작하는 방법

github에서 repository를 생성한 뒤, 내 작업공간으로 복사해서 작업을 시작한다.

$ git clone https://github.com/huacinta/TIL-sample.git

"git"이 연결된 폴더인지 확인하는 방법

$ git status
$ ls -a  → 명령어로 git 폴더가 있는지 확인할 것!

git에서 add, commit, push 하기! (feat. pull)

git은 결국 내가 작성한 코드를 공유하기 위해서 코드를 작성한 파일을 선택하고, 설명을 작성한 뒤에 repo에 공유하는 과정이 필요하다. 그리고 다른 개발자와 협업을 한다면 다른 개발자의 코드를 가져와서 내 코드와 합친 뒤에 새로운 코드를 작성해야 한다. 이러한 과정을 각 add, commit, push, pull이라고 한다.

1. add(선택)하기

  • $ git add 파일명 : 특정 파일만 선택 가능함
  • $ git add . : 변경된 모든 파일 선택하기

2. commit (작업내용 작성)하기

  • $ git commit : vim 에디터로 넘어가서 commit 메시지 작성하기
  • git bash에서 직접 커밋 메시지 작성 가능함 뒤쪽의 "가 끝나기 전에 엔터를 치면 제목과 내용으로 구분됨
    $ git commit -m "docs : Add README.md   → 제목
        I added README.md with git for the first time. → 내용
        I think git and github is cool."

commit 메시지 작성 tip

  1. commit 은 작업단위를 설명할 수 있는 충분한 내용이 있어야 함.
    (의미가 있는 단위로 구분되어야 한다.)
  2. commit 메시지는 가능하면 영문으로 작성하는 것이 좋다. (git repository가 공개되어 있다면 외국인들도 모두 확인할 수 있으므로 영문으로 작성하는 것이 좋다. 물론, 팀 프로젝트의 경우 팀원 간의 협의에 따라 한글로 작성해도 문제 되지 않는다.)

commit 메시지 prefix

  • feat : feature (기능 개발, 추가)
  • docs : documentions (문서)
  • refact : refactoring (코드 리팩토링)
  • conf : configuration (환경설정)
  • bug-fix : bug-fix (기존 기능에 버그)
  • solve : merge conflict solved
  • release : releases
  • style : 코드 포맷팅, 세미콜론 누락, 코드 변경이 없는 경우
  • test : 테스트 코드, 리팩토링 테스트 코드 추가
  • chore : 빌드 업무 수정. 패키지 매니저 수정

최신 commit 수정하기 (commit은 했지만 push는 하지 않은 상태)

$ git commit --amend : 작성했던 commit 메시지가 보이면 해당 commit 메시지를 수정 또는 유지 한 뒤 저장

3. push (repository에 올리기)하기

$ git push origin master : git을 origin에 master로 push 하기!

4. git에서 pull (당겨오기)하기

$ git pull origin master : 내가 현재 작업하고 있는 폴더에서 진행해야 함.

git에서 사용하는 기타 명령어

  • $ git status : 현재 작업의 상태 확인
  • $ git remote add origin 주소 : 깃 주소를 등록
  • $ git remote
  • $ git remote get-url origin
  • $ git log : 작업한 git commit  내용 확인
  • $ git pull origin 브랜치명 --allow-unrelated-histories : 머지가 다 되었는데, 자꾸 뭔가 더 머지를 해야 한다고 할 때 머지를 무시 (강제로 머지를 시키는 것이기 때문에 분명히 문제가 없다고 판단될 때만 사용해야 한다.)
  • $ git reset filename.txt : git add의 반대 개념으로 스테이징 된 파일을 스테이징이 되지 않은 상태로 되돌린다.
  • $ git branch [-r/-a] : -r 옵션은 리모트로부터 가져온 브랜치를 -a 옵션은 로컬과 리모트 브랜치 모두를 보여줌
  • $ git branch 브랜치네임 : "브랜치네임"으로 새 브랜치를 만들고 현재의 커밋을 시작점으로 함
  • $ git checkout 브랜치네임 : 브랜치를 변경하기
  • $ git log : commit history 보기
  • $ git log --pretty=online : commit history 보기 (1개의 commit을 1줄로 보여줌 : commit 아이디, commit 메시지)
  • $ git show 커밋아이디 : commit의 어떤 파일이 어떻게 변했는지 보고 싶을 때 사용 (커밋 아이디는 앞에서 4자리 정도만 작성해도 해당하는 커밋을 잘 보여줌. 단, 커밋이 엄청 많은 경우 중복될 수 있기는 함)
  • $ git config alas.내가만들단축명령어 '단축하고싶은명령어' : git에서 사용하는 명령어 중 너무 긴 명령어를 짧은 단어로 대체하고 싶을 때 사용
  • $ git diff 비교하고싶은이전커밋아이디 이후커밋아이디 : 선택한 두 commit을 비교해 줌 (두 개의 commit 사이에 어떤 점이 변경되었는지 확인 가능)

과거 commit으로 돌아가고 싶을 때는 reset

$ git reset 옵션 커밋아이디

git에는 내가 현재 작업을 하고 있는 곳을 working directory, git add를 했을 때 파일이 올라가는 staging area 그리고 git push를 한 뒤에 파일이 최종적으로 올라가게 되는 repository 이렇게 3가지 작업영역이 존재한다. 이 작업영역은 git reset을 할 때 옵션에 따라서 3가지 작업영역에 있는 파일이 바뀌거나 혹은 바뀌지 않는 것을 선택할 수 있게 한다.

옵션 working directory staging area repository
--soft 안 바뀜 안 바뀜 head가 선택한 커밋을 가르킴
--mixed 안 바뀜 선택한 커밋처럼 바뀜 head가 선택한 커밋을 가르킴
--hard 선택한 커밋처럼 바뀜 선택한 커밋처럼 바뀜 head가 선택한 커밋을 가르킴

이때 --hard 옵션을 사용한 reset은 사용을 권장하지 않는다. 내가 현재 작업 중인 working directory의 파일까지 전부 선택한 커밋의 상태로 돌아간다는 것은 즉, 해당 커밋 이후에 작업물이 전부 사라진다는 것을 의미하기 때문이다. 또한 그 작업물들을 복구할 수도 없기 때문이다.

  • $ git reset HEAD^ : push 하기 전 commit 취소 (해당 명령어에서 ^는 head가 가리키고 있는 커밋의 바로 이전 커밋을 의미한다.)
  • $ git reset HEAD~숫자 : ~숫자는 head가 가리키고 있는 커밋에서부터 (숫자) 단계 전에 있는 커밋을 의미한다.

commit에 태그 달기

  • $ git tag 태그이름 커밋아이디 : 작성한 커밋아이디에 태그를 달 수 있다. (보통은 버전 업그레이드와 같은 중요한 전환점이 되는 커밋에 태그를 달아서 표기한다.)
  • $ git tag : 태그를 조회한다.
  • $ git show 태그이름 : 태그와 연결된 커밋을 볼 수 있다.

gitignore

git에서 트래킹 하지 않아도 되거나, 트래킹 하면 안 되는 파일(비밀번호 파일, 개인정보 파일, 블랙리스트 파일 등)을 선택 작성할 수 있는 파일!

참고자료

https://git-scm.com/docs
https://git-scm.com/docs/git#_git_commands

'DEV-LOG > ETC' 카테고리의 다른 글

git은 왜 필요한가?  (0) 2023.06.09