TIL 9일차

안광의·2021년 6월 24일
0

Today I Learned

목록 보기
9/64
post-thumbnail

git

작업하던 파일을 편집하기 전 상태로 되돌리고 싶을 때 가장 간단한 방법은 파일을 수정할 때마다 따로 저장해두었다가 필요한 버전을 여는 것이다. 그러나 편집할 때마다 따로 저장해두는 과정은 번거롭고 어떤 파일이 필요한 버전인지 구분하기도 어렵고 협업할 경우 더 복잡해질 것이다. 이럴때 git을 사용하면 누가, 언제 수정하였고 어떤 부분이 수정되었는지를 인식해서 편리하게 버전 관리를 할 수 있으며, git과 원격 저장소(대표적으로 Github)를 연동하여 사용하면 컴퓨터가 고장나더라도 파일이 백업되기 때문에 문제 없이 복원이 가능하고, 사용자간 파일 공유를 원활하게 할 수 있다.

$ sudo apt install git

터미널에 해당 명령어를 입력하면 간단하게 git을 설치할 수 있으며(Ubuntu 기준) git --version을 통해 정상적으로 설치되었는지 확인이 가능하다.

$ git config --global user.name "나의 사용자 이름"
$ git config --global user.email "내 이메일 주소"

위 명령어를 통해 git의 유저네임과 이메일 설정이 가능하고, --global을 함께 입력해주면 모든 프로젝트에서 별도의 설정없이 같은 이름과 이메일 사용이 가능하다.

$ git config --global core.autocrlf input

운영체제마다 에디터에서 줄바꿈을 할때 윈도우에서는 \r\n, 리눅스나 Mac에서는 \n의 문자열이 입력되게 된다. 이러한 차이 때문에 git history를 볼 때 문제가 생길 수 있기 때문에, 위 명령어를 입력해주어 윈도우 환경의 개발자와 협업을 할때 줄바꿈으로 인해 생기는 문제를 자동으로 수정해줄 수 있도록 설정할 수 있다.

git workflow

[출처] https://dev.to/tauag/quick-start-guide-to-git-2of5

  1. Working Directory : 실제 파일을 수정하는 작업 공간으로 해당 디렉토리에 진입하여 git init라는 명령어를 통해 git에 등록이 가능하며, 수정한 파일이나 새로운 파일 추가시 add 라는 명령어를 사용하여 Staging area에 파일이 백업된다. 또한 수정되기 전 버전의 파일이 필요한 경우 checkout이란 명령어를 통해 Local Repo에서 파일을 가져올 수 있다.

    Working Directory 내에 저장된 파일을 크게 untracked된 파일과 tracked 된 파일로 나뉘어진다. tracked된 파일은 이전에 Staging Area에 등록이 되어있어 파일이 수정되었는지를 git이 확인하고 있는 파일이고 untracked된 파일은 그렇지 않은 새로운 파일을 의미한다. tracked된 파일은 수정여부에 따라 modified와 unmodified로 나누어지는데 git은 자동으로 modified된 파일을 인식하여 Staging Area에 전송하며 add의 옵션에 따라 수정된 내용의 일부만 전송하는 것도 가능하다.
    (명령어들에는 다양한 옵션이 존재하는데 git 공식 홈페이지나 <명령어> --h를 터미널 창에 입력하면 확인이 가능하다.)

  2. Staging Area : Working Directory에서 수정된 파일이 add를 통해 전달되는 공간으로 commit 명령어를 사용하면 Local Repository에 수정된 기록과 함께 업로드 된다. 보통 commit --m <수정된 내용>을 입력하여 수정된 내용이 무엇인지 함께 기록하여 commit 한다.
    commit 되지 않은 변경사항을 폐기하고 싶을 때는 restore을 이용하면 된다.

  3. Local Repo : Remote Repository에 있는 파일을 수정하기 위해서는 Local Repository로 clone 명령어(git clone <Repository 주소>)를 통해 내 컴퓨터로 파일을 복사할 수 있다. 또한 commit된 파일을 push 명령어를 통해 Remote Repository로 전송이 가능하다.

  4. Remote Repository : 파일을 저장하는 외부 저장소로 대표적으로 github가 있으며, git remote add origin <Repository 주소>를 통해 Local Repository와 Remote Repository의 연결이 가능하다. 또한 다른 Remote Repository에 연결하여 협업시 유용하게 사용할 수 있다. pair가 master branch(처음 생성한 Remote Repository)에 수정한 파일을 업로드 했다고 가정하면 git pull master를 통해 Local Repository로 해당 파일을 가져올 수 있는데 수정된 내용을 내가 가진 파일과 자동병합(merge)하게 된다. 이 과정에서 동일한 라인을 수정했을 경우 충돌이 일어나게 되어 별도로 수정해줘야 한다.

마치며

프로그램을 만들때 수많은 코드들을 작성해야 하고 수정사항이 발생할 텐데 어떻게 관리가 가능할까 궁금했었는데 git에 대해서 배우면서 궁금증이 해소되었다. 현업에서도 git을 사용하기 때문에 개념이나 명령어를 확실히 이해하고 Source Tree나 Kraken 같은 UI 어플리케이션들도 추가적으로 공부해봐야겠다.

profile
개발자로 성장하기

0개의 댓글