TIL 9

모모·2021년 10월 18일
0

TIL

목록 보기
9/28

오늘의 학습


버전 관리 시스템

Git

Git은 가장 많이 쓰이는 버전 관리 시스템이다.
버전 관리 시스템을 통해 파일의 버전별 변경 이력을 저장, 관리할 수 있다.
어느 부분이 바뀌었는지 확인이 용이하기 때문에 공동 작업에 용이하다.
내 컴퓨터에서 작업하는 Local Repository, 공유 및 백업을 위한 Remote Repository가 있다.

Github

Github는 Git Repository를 효과적으로 관리할 수 있는 클라우드 기반 서비스이다.
Github를 통해 가상 저장소에 여러 사람들이 접근할 수 있어 공동 작업에 용이하다.

Git을 활용한 Workflow

Solo Work

A라는 프로젝트에 contribute하고 싶다고 가정하자.

  1. 먼저 내 계정으로 해당 Remote Repository를 가져오기 위해 Fork를 통해 내 Repository에 복사본을 만든다.

  2. Remote Repository를 내 Local Repository에서 이용할 수 있도록 터미널에서 git clone [Repository 주소] 명령어로 가져온다.

  3. 이제 git status 명령어로 내 로컬로 복사해온 디렉토리의 commit되기 전까지 상태를 알 수 있다.

  4. 코드를 작성하다 아니다 싶을 수 있다. staging area에 올리거나 commit하지 않았다면 git restore로 변경사항을 폐기하고 처음 clone을 받아온 상태로 되돌릴 수 있다.

  5. 디렉토리를 수정하여 이를 반영하고 싶을 때 먼저 staging area에 올리기 위해 git add [파일명] 을 입력한다.

  6. 이제 commit할 준비가 되었다. git commit -m [메시지] 로 무엇이 바뀌었는지 간단한 메시지를 남긴다.

  7. Reomote Repository에 업로드 하기 전, Local Repository에 commit한 기록을 취소하고 싶다면 git reset HEAD^ 명령어를 사용하자. 가장 최신의 commit을 취소할 수 있다.

  8. 최종적으로 contribute할 준비가 되었다면 Remote Repository에 업로드하자. git push [Repository 이름][브랜치] 명령어를 통해 로컬 작업물을 Github에 업로드할 수 있다.

Team Work

하나의 프로젝트를 공동 작업한다고 가정하자.

  1. 김군이 토이 프로젝트를 시작하기 위해 컴퓨터에 디렉토리를 하나 만든다. 이 디렉토리의 버전 관리를 위해서는 Git Repository로 변환해야 하기 때문에 git init 명령어를 사용하여 Local Repository화 시켰다.

  2. 어디서든 작업하고, 추후 협업할 수 있으니 Github의 원격 저장소로 올려야 한다. git remote add [Repository 주소] 명령어를 사용할 수 있다.

  3. 프로젝트 진행에 관심있는 박군이 함께하기로 했다. 내 작업물과 박군의 작업물을 공유하기 위해 서로의 Repository를 연결하자. git remote add [상대 Repository 이름][상대 Repository 주소]를 입력해 연결할 수 있다.

  4. git remote -v로 연결상태를 확인하자.

  5. 박군이 맡은 작업을 완료했다고 한다. parkAndKim_cowork Repository의 master 브랜치에 작업한 코드를 올렸다고 한다. git pull [상대 Repository 이름][브랜치] 명령어로 이를 받아오자. 받아오는 내용은 자동으로 병합(merge)된다.

  6. 박군의 작업물에 더하여 내 작업물을 업로드하려 한다. git push [내 Repository 이름][브랜치] 명령어로 Remote Repository에 업로드하자.

추가 학습

브랜치(branch)란?

소프트웨어를 개발할 때 개발자들은 동일한 소스코드를 함께 공유하고 다룸.
이는 각각 서로 다른 버전의 코드를 만드는 원인임. 이때, 개발자들이 동시에 다양한 작업을 할 수 있게 만들어 주는 기능이 바로 '브랜치'임

각각의 브랜치는 다른 브랜치의 영향을 받지 않기 때문에 여러 작업을 동시에 진행할 수 있음. 각자 작업을 진행하며 작업이 끝난 사람은 메인 브랜치에 자신의 브랜치의 변경 사항을 적용하는 방식으로 작업물을 하나의 결과물로 만들어 나갈 수 있음.

git diff vs git log

git log는 commit 로그를 보여줌. 즉, 저장소에 있는 commit 히스토리를 확인할 수 있음.

git diff는 commit끼리 비교, 혹은 commit과 working directory를 비교함.

0개의 댓글