git 개발자 도구 사용법

백승용·2020년 10월 16일
0

ubuntu에서 git 설치

  • 터미널을 열고 sudo apt install git으로 설치
  • git --version으로 설치 확인

git이란

빈번한 파일 내용의 변경으로 이전에 작성한 내용들을 보존해야할 필요성이 있어 여러 파일들을 관리해야되는 경우가 생긴다. 이때, 필요한 것이 버전 관리 시스템인 git이다.

git으로 할 수 있는 것

  • 버전 정보 저장
  • 이전 버전 복원
  • 백업
  • 어떤 것이 변경되었는지 추적 가능
  • 협업

GitHub

  • git을 사용하는 사람들의 소셜 미디어, 여러 사람들과 공유할 수 있게 코딩을 오픈해 놓은 곳

내 pc에 git 저장소를 만드는 방법은 두가지이다.
하나는 clone으로 다른 프로젝트를 복사하여 git 저장소를 만드는 방법이다.
다른 하나는 git 저장소를 내 pc에 생성하는 방법이 있다.
보통 github에 올라온 오픈 소스의 코드들의 경우 clone을 바로 하기보다는 github의 fork를 이용하여, 자신의 github에 복사한 후 clone하여 작업하고 수정하는 경우가 많다. 그 이유는 오픈소스에 직접 업로드할 권한이 없기 때문에 자신의 github로 저장소를 fork로 복사하면, 코드를 직접 관리할 수 있기 때문이다.

용어 정리

  • fork : 다른 사람의 repository를 내 github 계정으로 가져오는 작업을 fork라고 한다.

  • repository : 작업의 흐름, 기록 모든 것을 repository라고 한다.

  • branching and merging
    - branch 종류 : feature branch, develop branch, master branch
    - feature branch는 여러 기능을 만드는 branch이다. 기능들을 완성했다면 develop branch와 merging한다.
    - feature branch와 merging해서 충분한 테스트를 하기 위한 branch가 develop branch이다. 버그 및 오류들이 없을 때, master branch와 merging한다.
    - 사용자들이 버그 없는 프로그램을 사용할 때 master branch를 시용한다.

  • pull request : original repository에서 버그를 발견해 수정하여 전달하려면, pull request를 사용하여 수정사항을 전달할 수 있다. 만약 관리자가 수정한 코드를 보고 허락한다면 오픈 소스에 contribute할 수 있다.

  • stage area : 변경한 파일을 commit하기 전에 git에 올리기 위한 작업

clone, push, pull, upstream, commit 명령어

  • git clone : 내 github에서 내 컴퓨터로 가져오는 작업을 clone이라고 한다. 다른 프로젝트에 참여하려거나 git 저장소를 복사하고 싶을 때 사용한다.
    git clone [url]

  • git push : 컴퓨터에서 작업한 파일을 내 github 계정에 올리는 작업을 push라고 한다.
    git push origin master
    - origin은 원격 저장소 이름이고, master는 현재 사용하는 컴퓨터의 branch 이름이다.

  • git pull : 협업하는 사람이 repository를 변경하여 가져오려고 하는 것을 pull이라고 한다.
    git pull origin master

  • git upstream : 원본 repository에서 변경한 것을 내 컴퓨터에 가져오는 작업을 upstream이라고 한다.
    git pull upstream master

  • git commit : 변경 사항을 snapshot하는 작업, 메세지를 잘 적어놔야 작업 기록을 잘 추적할 수 있다.

pull/push 사용 시 ID/PW 입력 안하는 방법

  • git config --global user.name "계정 이름"
  • git config --global user.email "계정 이메일"
  • git config --global credential.helper 'cache --timeout 7200'

git init으로 내 컴퓨터에 저장소 만들기

cd 명령어로 디렉토리에 들어간다.

git init으로 저장소를 초기화한다.

git add로 파일을 staging area에 올린다.
git add [파일이름]

git status로 상태 확인


git remote add로 원격 저장소 추가
git remote add [https://github.com/username/repositoryName.git]
repository 변경
git remote set-url [변경할 원격 저장소]
repository 확인
git config --list 또는 git remote -v


git push origin master로 원격 저장소에 업데이트
fetch first 에러는 원격 저장소와 현재 로컬 저장소가 동기화 되어있지 않기 때문에 발생
git pull --rebase origin master으로 동기화
non-fast-forward 에러는 원격 저장소와 로컬에 생성된 저장소 간 공통분모가 없는 상태에서 병합하려는 시도로 발생하는 에러이다.
git pull origin master --allow-unrelated-histories옵션으로 두 저장소를 병합


Tracked와 Untracked

작업하는 폴더(working derectory)에서 git add를 하여 commit하기 전에 stage area에 파일을 올려두는데 이때 Tracked와 Untracked로 파일이 나눠진다. commit한 상태를 Tracked, commit하지 않거나 stage area에도 없는 것을 Untracked라고 부른다.
Staged는 commit하기 전 git 저장소에 기록될 준비가 된 상태(git add로 stage area에 있는 것)이고 Tracked는 Modified와 Unmodified와 Staged 세가지가 있다. Modified는 commit이후 수정한
파일을 의미하고 Unmodified는 commit이후 수정하지 않은 상태를 의미한다. 그래서 git add 후에 Unmodified상태가 되고 수정하면 Modified 상태에서 git add를하면 staged 상태 상태로 올려준 후 commit하는 과정을 반복한다.

checkout과 diff

  • git add하기 전에 사용 가능하다.
  • git checkout으로 수정한 것을 수정하기 전으로 돌려놓는다. 주의해야되는 것은 수정한 부분을 다시 불러올 수 없다.
  • git diff는 수정한 것을 보여주는 명령어이다.

reset

  • git add로 stage area에 올라가 있을 때는 git reset으로 modified 상태로 돌려준 후 checkout을 사용한다.
  • commit 상태에서도 되돌리기가 가능하다.

옵션
--soft : commit 직전의 staged 상태
--mixed : commit 전의 Modified 상태, default
--hard : commit 전의 Unmodified 상태, 수정한것 전부 삭제
git reset HEAD~1commit 1개 전으로 되돌아가는 명령어(modified)

branch 관리

  1. 혼자서 홈페이지를 만들고 있는데 새로운 기능을 추가하고 싶지만 많은 commit으로 master branch의 로그가 지저분해지는 것을 방지하기위해 사용할 수 있다.

  2. 2명 이상의 사람과 협업을 하고 있을 때 코드의 충돌을 방지하기 위해 사람마다 다른 branch를 사용하여 충돌을 방지할 수 있다.

내 pc에 새로운 branch 만들기

  • git branch [branch 명]
  • git branch로 확인 가능

생성된 branch 선택

  • git checkout [branch 명]

merge

  • 생성된 branch에서 작업 후에 master와 합치려고 할 때 사용하는 명령어
  • merge하기 전에 생성된 branch에서 commit까지 완료한 후에 branch를 master로 변경한다.
  • master에서 git merge [생성된 branch 명]을 입력하여 합쳐준다. 이 때 주의할 점은 master에서 수정하고 merge하면 충동 난다.

원격 저장소에서 branch 가져오기

  • git remote update
  • git branch -r : 원격 저장소의 브랜치 리스트를 볼 수 있다.
  • git branch -a : 원격 저장소와 로컬 저장소 모두 브랜치 리스트를 볼 수 있다.
  • git checkout -t origin/[branch명] : 원격 저장소의 브랜치를 가져올 수 있다.

원격 저장소 branch 삭제

  • git push origin --delete [삭제할 branch명]

로컬 저장소 branch 삭제

  • git branch -D [삭제할 branch명]

Github에 잘못 올라간 파일 삭제

  • git rm [파일 이름] : 원격 저장소와 로컬 저장소에 있는 파일을 삭제한다.
  • git rm --cached [파일 이름] : 원격 저장소에 있는 파일만 삭제한다.
  • git rm --cached -r [폴더 이름] : 폴더 하위의 모든 파일을 삭제한다

untracked file 삭제

  • git clean -f : 추적하지 않은 파일 삭제
  • git clean -d : 추적하지 않은 폴더 삭제

정리

git으로 협업할때 각자 pc로 clone 및 다운로드하여 여러 commit이 필요한 경우 branch를 나눠서 각자 pc에서 개발한다. 완성되면 master로 합쳐준 후 내 프로젝트 github에 push 후 pull request하여 original repository에 merge를 요청을 한다.
만약 original repository에서 변경이 있으면 pull로 변경사항을 가져온다.

참고 사이트
https://webclub.tistory.com/317
git 명령어 정리
git 수정하고 저장소에 저장하기
git 저장소 생성, commit하기
Tracked와 Untracked

0개의 댓글