Git, Github

홍인열·2021년 9월 2일
0

독학하면서 git과 github를 사용해 보았다. 무작정 따라서 설치하고 딱 하라는데로만하면 문제는 없었다.
오늘은 git 개념과 필요한 이유등에대해 좀더 자세히 생각해볼 수 있었다.

Git & Github

Git은 버전관리 시스템으로 파일의 수정 및 추가사항들에 따라 봐끼는 여러 버전들의 관리를 도와준다.
무료서비스이고 수만은 개발자들이 사용하고있다.
Github는 말그대로 Git을 통해 버전관리되고있는 파일들의 hub라고 생각하면된다. 일종의 클라우드서버로 각종 프로젝트들이 업로드되어 버전관리되고있다. 특히 협업을통해 프로젝트를 개발, 관리 하다보면 여러 사람들이 같은 파일을 수정하는 경우등이 생기게되면서 다양한 버전의 파일이 만들어지게 되는데 이것들을 효율적으로 관리 할수 있게 해준다.
컴퓨터의 CLI 환경에서 $ git --version 명령어를 통해 git이 설치되어 있는지 확인 할 수 있다.

Local Repository와 Remote Repository

  • Local Repository
    프로젝트를 작업하는 컴퓨터에 생성된 저장소다. Github에 업로드되지 않은 상태로 다른 사람들은 접근할 수 없다.
  • Remote Repository
    Local Repository의 버전관리중인 프로젝트를 Github의 특정 Repository로 업로드 함으로써, 다른 사람들도 해당 프로젝트에 접근하여 협업이 가능해진다. 수많은 오픈소스들에 참여도 가능하게 한다.

Committed, modified, staged

  • Committed : Local repository에 업로드 된 상태.
  • midified : Local repository에 업로드되있는 파일과 비교하여 수정사항이 있는 상태.
  • staged : 파일의 상태가 추적되고 있는 상태.

git 명령어

$ git init : 작업중인 프로젝트 폴더를 git 버전관리 환경으로 만들어준다.
$ git status : 프로젝트 파일들의 현재 상태를 확인 할 수 있다.
$ git add . : 수정된 모든 파일들을 버전관리 stage로 업로드 한다. (gitignore 통한 업로드 제외 파일 제외)
$ git add * : 수정된 모든 파일들을 버전관리 stage로 업로드 한다. (gitignore 통한 업로드 제외 파일 포함)
$ git add [filename] : 선택한 파일만 버전관리 stage로 업로드 한다.
$ git commit -m '[내용] : 수정된 파일들을 Local repository로 commit, 간단한 메모를 할 수 있다.
$ git commit : 충돌 수정 후 자동으로 commit 내용 작성

$ git log : commit 기록을 확인 할 수 있다.(확인 후 메뉴를 빠져때는 q)
$ git reset HEAD^ : ^번째 commit을 하기전 상태로 되돌린다.
$ git reset --hard 커밋 넘버 : 병합을 취소하고 이전 커밋으로 돌아간다.

$ git remote add origin [branch] : Local repository와 Remote repository를 연결 시킨다.
$ git remote -v : 프로젝트와 연결된 repository를 확인 할 수 있다.
$ git push origin [branch] : 해당 branch로 Local repository의 파일을 업로드한다.
$ git pull [remote 이름] [branch] : 해당 branch의 프로젝트를 가저온다.
$ git stash : 작업중인 파일을 commit하지 않고 임시저장한다.
$git merge [branch] : 해당 파일을 현재 branch에 merge시킨다.
$git branch [이름] : 새로운 branch를 만든다.

$git checkout [이름] : 해당 branch로 이동한다.
$git switch [이름] : 해당 branch로 이동한다.

$git checkout -b [이름] : 해당 branch를 새로만들고 이동한다.
$git switch -c [이름] : 해당 branch를 새로만들고 이동한다.

$git checkout -d [이름] : 해당 branch를 제거한다.

Upstream & Downsteam

upstream과 downstream은 상대적인 개념으로, 나의 myRepo와 다른사람의 otherRepo가 있으면, 내가 otherRepo로부터 pull from 해오고 push to 한다면 내 myRepo가 downstream, otherRepo가 upstream으로 정의할 수 다.

Origin과 Upstream의 차이

내가 otherRepo를 fork 해오면 OtherRepo가 오리지널 레포이고 upstream은 이를 지칭하는 것이다. 여기서 내가 otherRepo를 fork 해오고 clone될때 디폴트 remote는 origin 이다.
=> otherRepo를 fork 하면 otherRepo는 upstream이고, fork해온 myRepo는 origin이 된다. my Repo를 추적하고 싶다면 upstream인 otherRepo도 remote되어야 한다.

profile
함께 일하고싶은 개발자

0개의 댓글