Git & Github 그리고 그 흐름에 관하여

이승훈·2022년 8월 25일
13

TIL

목록 보기
3/31
post-thumbnail

⚬Concept


1. git이 뭐고 왜 쓰는가

개발을함에 있어서 우리는 수없이 실수하고, 고치고, 정답인줄 알았던것이 후일 오답이 되어 다시 수정하는 과정을 무한히 반복한다.
이렇듯 작성과 수정을 무한히 반복하는 과정에서 단계별로 기록을 정리하고 그 수정내용에 대한 체계적인 정리의 중요성은 아무리 강조해도 부족하지 않다.






이 중요한 과정을 체계적으로 관리하는 프로그램이 바로 git이다.

git이란 뭘까?

git은 version을 관리하는 시스템이다. 그럼 version은 뭘까?

그렇다.
버전은 어떤것을 수정, 개선하여 완성한 것 이다.
또한 이전과 약간씩 다른 변화들을 구분하는 표시다.

자 위의 안좋은 문서집계표 예시를 보자.
저렇게 관리하면 뭐가 문제일까?
당연히 어떤게 진짜 최종 제출용 파일인지로 모른다.

그래서 하나의 파일에서 관리를하자고 해서 나온 버전관리가 이력을 남기는 방법이다.
아래가 바로 그 예시이다.

⚬How to use git in Local PC


자 그럼 이런 버전관리를 위한 git의 기본적인 사용법에 대해 알아보자.

개발을 함에 있어서 명령어가 뭔지 잘 모를 땐 단어의 의미를 생각해보는것도 좋은 방법이다.





Git init

내가 git으로 관리하고싶은 파일이 있는 디렉토리안에서 git init을 해줘야 한다.
어디 그냥 어문데서 하면 별의별 온갖 파일들이 다 올라갈 수 있다.

Git status

자 위처럼 git status를 통해 디렉토리에서 일어나고 있는 상태를 확인해볼 수있는데
Untracked files: myungsung.md
라는 문구는 myungsung.md 파일의 이력이 추적이 안된다는 뜻이다.

즉, myungsung.md 파일을 git 관리대상에 추가해줘야한다.
이렇게 관리대상에 추가해주는 명령어가 바로 아래의 git add 다.

Git add

자 위처럼

> git add myungsung.md

를 통해 myungsung.md 파일을 관리대상에 추가해주면

> git status
를 통해 확인 시 UntrackedFile 이 없이 myungsung.md 파일이 안전하게 관리대상안에 들어간것을 볼 수 있다.

Git commit

git add는 장바구니에 담는것이고 git Commit은 실제로 장바구니에 담긴것을 주문한다고 생각하면 편하다.

자 그렇다면 커핏에 남긴 변경이력들을 확인해보고자할텐데 그럴 떄 사용하는게 아래의 명령어다.

Git log

  1. git init을 한 디렉토리로 이동
  2. git log를 입력
  3. git add를 하여 등록한 파일들의 변경이력에 대한 로그 및 내가 남긴 commit 확인 가능

============================================================================================================

⚬Github


현재까지 내가 만든 파일의 이력을 잘 관리하기 위한 git이 무엇인지, 그리고 그 사용법이 무엇인지 알아보았다.
하지만 익히 알다시피 개발은 절대 혼자할 수 없다.
우리는 모두 함께 일해야하고 함께 하나의 파일을 관리해야한다.

다수의 인원이 함께 코드를 관리하기 위해서 이 git을 온라인에서 관리해야할 필요가 있었고
그래서 나타난것이 바로 github이다.

깃헙의 마스코트인 옥토캣이다.
고양이는 그냥 뭐...개발자들이 고양이를 좋아하니까 넣은것같고
핵심은 옥토 즉, 문어이다.
이 문어다리는 그냥 넣은게 아니다.
여러갈래로 뻗어나간다는 의미가 있다.
즉, 이 github이라는 시스템에서 개발자들이 함께 일 할 수 있는 시스템이라는것을 의미한다.

⚬How to use Github


자 그럼 이제 github에 사용하는 명령어들을 아라보자.

Git remote

"remote는 어떤 새로운곳에 연결을 하겠다" 라는 뜻이다.
여기서 새로운곳이란 원격저장장소를 뜻한다.(현재는 github을 뜻한다.)

그리고 origin은 대명사다.
우리가 작업한 코드를 어디다 올려야하는데 그 주소 URL을 매번 올리기 번거로우니 origin이라는걸 사용해서 그 뒤에 나와있는 주소를 대체하는것이다.

자 이제 원격저장장소를 지정하였고 내가 git으로 관리하고 있는 코드를 그 원격저장소(github)에 올릴것이다.

Git push

브랜치는 추후 다시 다루겠지만 내가 관리하는 코드의 수정을 위한 별도공간이라고 생각하면 된다.
맨 처음에 git init을 하면 master 브랜치에 있다.

자 그럼 여기서 git push origin master라는 명령어를 입력해주면
내가 선택한 원격 저장소(origin<-github)의 master 브랜치에 내가 관리하는 코드를 올리게 되는것이다.

짠 이렇게 github에 등록이 되었다.



Git clone

공동으로 작업한다는것은 내가 업로드하는것만이 전부가 아니라 남이 작성해놓은 코드를 내려받아 작업도 할 수 있어야한다.
남이 작성한 코드를 내려받을 때 사용하는 명령어가 바로 git clone 이다.
위처럼 clone 명령어를 사용하면 github에 있는 파일들을 다운로드 받는다.

Git branch

브랜치는 내가 작업을 하기위해 만드는 독립된 공간이다. 마스터 브랜치는 절대 건드려선 안되는 순수한..성역이다.. 그리고 그 마스터 브랜치에서 내가 따로 브랜치를 따서 작업하는것이다.

Git checkout

브랜치를 만들면 checkout으로 꼭 브랜치 이동해야한다.
아니면 마스터에서 작업하다가 다 조지는수가 있다.

Git pull

pull은 코드를 가져온다는 의미이다.
근데 clone이랑은 다르다.
clone은 repository에 있는 전부를 가져오는 개념이다.
pull은 특정 브랜치의 코드(특정공간의 코드)를 내 로컬로 가져올 때 사용한다.

사족을 달자면 origin 같은 경우 github과 관련된 작업을 할 때 붙는 명령어다.
git remote 할 때 git remote origin 주소주소URL 이렇게 했꼬
origin은 뒤의 주소주소URL의 대명사로서 의미한다.

Git merge

merge는 로컬에서 특정 브랜치의 코드와 다른 브랜치의 코드를 합칠 때 사용한다.

⚬Summary


clone → branch → push → pull

  1. clone으로 받아와서
  2. branch로 브랜치따고 작업하고
  3. 작업한 코드를 push로 깃헙에 올리고
  4. 그렇게 리뉴얼된 깃헙파일을 pull로 가져와서 내 로컬파일에도 동기화를 시킨다.




추가

commit 메시지도 개발자들끼리의 소통 방법중 하나이다.
commit 메시지만으로도 이 개발자가 무슨 작업을 헀는지 알아야한다.

예를들면 하기 예시와 같다.

profile
Beyond the wall

5개의 댓글

comment-user-thumbnail
2022년 8월 25일

좋아요

1개의 답글
comment-user-thumbnail
2022년 8월 28일

그렇다...! 승훈님은 빛이다!

1개의 답글
comment-user-thumbnail
2022년 8월 30일

ㅋㅋㅋㅋㅋ "진짜마지막"

답글 달기