TIL-7. git과 github

solarrrrr·2021년 10월 17일
0

Today I Learned

목록 보기
7/74
post-thumbnail

git and github

깃과 깃허브에 대해서 배웠다.
'깃'이란 분산 버전관리 시스템(VCS)이다.
프로젝트 파일의 변경사항을 추적하는 시스템이라고 하는데
로컬에서 작업한 내용들을 리모트 공간(깃허브)과 동기화하거나
기타 여러 작업들을 할 때 쓰인다.

깃을 사용하면 변경된 사항이 기록되고,
원한다면 기록된 변경 시점으로 되돌아갈 수 있기 때문에
관리가 용이해진다.

간단한 깃 사용법을 보자.
일단 깃을 설치한 후 아래의 명령어를 입력.

git --version

설치가 잘 되었으면 버전이 뜬다.
이후 본인 정보 등록.
아래 이름과 이메일 등록은 최초 한 번만 하면 된다.

git config --global user.name "이름"
git config --global user.email "이메일"

이후 깃헙 사이트에서 repository를 생성하고 주소를 복사한다.
깃헙에 있는 내 저장소를 뜻한다. (리모트)

이후 내 컴퓨터에도 저장소를 만들어준다. (로컬)

mkdir ~/my_git # 폴더 임의 지정

만들어진 폴더로 이동 후 아래 명령어를 통해
깃 초기화를 해 준다.

git init

이제 이 디렉토리는 깃으로 초기화되어 있다.
이제 로컬과 리모트를 연결해 보자.

git remote add origin http://github.com/깃헙아이디/레파지토리

이렇게 하면 내 컴퓨터와 깃헙 사이트의 저장소가 연결된다.
앞으로 푸시 등의 작업을 할 때 주소를 다 적을 필요 없이
origin만 적어주면 된다.

이제 로컬에서 개발을 진행한 후 리모트로 업로드하고 싶다면 push를 하면 되는데
그전에 해야 할 작업이 있다.

git의 경우 작업트리(로컬) - 인덱스 - 저장소(레파지토리/리모트) 이렇게 세 단계로 구분되는데
git으로 초기화해 둔 내 작업 디렉토리의 파일을 인덱스에 올려야 한다.
특정 파일만 선택해 인덱스할 수도 있고 전체를 다 할 수도 있는데
아래 명령어는 전체를 다 인덱싱하는 방법이다.

git add .

이렇게 하고 난 후 커밋을 해 주면 준비 끝이다.
만일 인덱싱된 것들 중 제외하고 싶은 게 있다면,

git rm --cached

이렇게 해 주면 된다.
그리고 커밋 명령어를 통해 최종 확정의 단계를 거친다.

git commit -m "설명"

이제 push를 해 주면 된다.

git push origin main or branch

작업물들이 레파지토리로 전송되는 것을 볼 수 있다.

참고로 원래 레파지토리 브랜치를 보면
디폴트로 master라는 이름으로 할당돼 있었는데
인종 차별(master/slave) 문제 등이 연상된다는 이유로
master가 main으로 변경되었다.
기존에 생성했던 이용자들은 자동 변경되지는 않고
개별적으로 변경해 줘야 하는데

git branch -M main

이렇게 바꿔주면 된다.

여기서 branch란 저장소 안에 존재하는 또 다른 저장소라고 생각하면 이해가 쉽다.
레파지토리라는 하나의 저장소에 main이라는 브런치가 존재하고
그곳을 내 컴퓨터와 연결해놓고 개발 중이었는데
다른 사람과의 협업을 하거나 신기능을 개발해야 하는 등
기존에 하고 있던 개발과의 분리가 필요할 때 사용한다.
새로 만든 브런치에서 개발하고 그 브런치로 푸시하게 되면
원래의 내 브런치 공간은 영향을 받지 않으므로
코드가 섞이거나 관리에 어려움을 겪지 않을 수 있어서
꼭 브런치를 사용하는 것이 좋다.

branch간의 merge(병합)도 가능한데
가령 main 브런치에서 개발을 하다가 test 브런치에서
잠시 새로운 신기능 구현을 개발했는데 잘 되었고
이걸 원래 개발하던 곳에 넣고 싶으면
pull request라는 깃헙의 기능을 통해 병합할 수가 있다.

혹은 다른 개발자와 협업을 할 때
상대방의 브런치 자료를 fork 기능을 통해 콕 찍어서
별도로 생성한 내 브런치로 가져온 후
로컬에 새로운 공간을 만들어 연동해서 개발에 참여할 수도 있다.
내가 개발 완료한, 수정 완료한 내용들은 푸시를 통해
내 깃헙에 올리고 해당 내용을 상대 개발자에게 pull request를 하면
상대방은 코드 내용이나 수정 사항을 보고 자신의 코드에
merge 할 것인지 말 것인지 판단할 수 있다.

상대방에서 pull request를 한 후 해당 작업은 종료되었으므로
내 브런치는 삭제하면 끝.


이 정도로 깃과 깃허브에 대해 개념을 익혔다.
더 자세한 기능과 명령어들도 많은데
차차 익혀나가면서 하나씩 추가해 봐야겠다.

profile
몰입

0개의 댓글