다시 돌아온 월요일 2주 밖에되지 않았지만…
머리가 지끈거린다.

주말을 쉬면 몸이 나태해져버려서 그런 것인가…
순식간에 백수의 몸상태로 돌아가버렸다…
다음부터는 주말에도 생산적인 일을 해야 월요일에도 지장이 없을 것만 같은 느낌적인 느낌쓰

오늘도 달려보자!


오늘은 드디어드디어
Git에 대해 공부해보는 시간이 왔다.
지옥에서 온 문서 관리자 !!!
저번주에 리눅스와 CLI을 배웠다.

리눅스를 개발하신분 성함이 ‘리눅스 토르발즈’라는 분이시다.
오픈소스로 개발된 리눅스를 관리하기에 있어 빡세다보니
Git이라는 버전관리 시스템도 개발하셨다고 들었다.
오늘은 그 버전관리 시스템인 Git이라는 것을
CLI을 통해서 찍먹을 해볼 생각이다

Git이란 것 자체는 로컬에서 버전을 관리해주는 프로그램이다.
이를 원격 저장소 기능을 제공해주는 서비스 중 하나가 Github인 것이고
이 외에도 GitLab 등이 있다.
쉽게생각하면 남과 공유가 가능한..
내 아이폰과 아이클라우드 같은 느낌이랄까..?

image
출처 - designless.net

add, commit, push : 원격 저장소에 업로드하는 과정
fork, clone : 협업자의 작업물을 나의 로컬로 다운받는 과정
pull request : 상대 협업자에게 나의 완성물을 취합해달라고 요청하는 과정
merge : 상대방의 작업물과 나의 작업물을 취합하는 과정
일단 간단하게 이렇게 정의하고 넘어가자! 이후에 더 상세하게 차이를 알아보자.


Git 환경설정

.gitconfig라는 파일에 유저이름과, 이메일을 설정해줘야한다.

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

위와 같이 입력 시 gitconfig파일에 나의 이름과 이메일을 설정할 수 있다.
나의 사용자 이름은 Git Hub의 username과 동일하게 설정했다.
이메일 또한 Git Hub 로그인 이메일을 설정!

최종설정!

git config --global user.name “Lee Jaehyeok”
git config --global user.email "dhfif718@gmail.com"

image

여기서 내가 설정한 것들이 들어갔는지 확인해보려면

cat ~/.gitconfig

cat명령어를 이용해 .gitconfig파일에 접근하면
확인이 가능하다!!

image

추가로 vi편집기가 익숙하지 않다면 추후에 merge commit 확인 메세지가 나올때
nano편집기를 사용하고 싶다면 아래의 명령어를 추가하면 된다.

git config --global core.editor nano

SSH 등록하기

SSH란?
Secure Shell의 줄임말로, 보완이 강화된 shell 접속을 뜻한다.

1) authorized_keys
-. id_rsa.pub 키 값을 저장한다.

2). id_rsa (비밀키)
-. 개인키이며 타인에게 노출되면 안되는 private key이다.

3).id_rsa.pub (공개키)
-. public key, 공개되어도 비교적 안전한 Key이다.
-. 접속하려는 Remote Machine의 authorized.keys에 입력하여 사용한다.

ssh-keygen

위의 명령어를 통해서 id_rsa와 id_rsa.pub 페어를 생성!

cat ~/.ssh/id_rsa.pub

생성된 공개키값을 확인한 후에 복사한다음

GitHub SSH Key등록하면 완료

image


Git workflow

Git이 어떻게 동작하는지? 조금더 상세히 알아보자
아래 그림과 같이 Local,Remote영역이 구분되어진다.
내가 이해한 바로는 Local은 내 컴퓨터의 작업환경이고
Remote는 실제 Github의 올라가있는 Repository를 얘기하는 것 같다.
Local 작업환경에도 Work space(working tree), Staging Area, Local Repository 이렇게
크게 3가지로 나뉘어진다.

image

git fork : 다른 유저의 Repository에 contribute하고 싶을 경우 fork하여 내 Repository로 가져오는작업
git clone : Reomote에 있는 파일들을 복사해오는 작업
git stats : Work space, Staging Area 상태 확인이 가능함.
git add : Work space의 Untracked파일을 Staging Area에 올리는 작업
git restore : Straging Area에 Commit되지 않은 변경사항을 폐기함.
git commit : Staging Area의 파일을 Commit하여 Local Repository로 등록
git reset : Local Repository만 기록해놓았다면 Commit을 취소할 수 있다..
git push : Local Repository의 파일을 Remote Repository로 올린다.
git pull : Remote Repository의 파일을 Work Space로 가져온다.

큰 틀은 이렇게 되어 지는 것 같다.

Local에서 작업한 나의 파일들을 Remote의 GitHub Repository까지
올리는 과정들!! git을 잘 다루기위해서 이 흐름을 알고 있어야하고
알아야지만 협업할때 큰 무리가 없을 것 같다는 생각이 든다.
이 외에도 git을 다루는데 연습해보면서 써볼만한 명령어들을 올려본다

git remote -v : 현재 원격 연결되어있는 레포지토리 표시
git remote remove <remote이름> : 연결중인 리모트 삭제
git remote get-url <remote이름> : 연결중인 리모트의 주소확인
git remote set-url <remote이름> : 연결중이 리모트의 주소변경
git branch : 현재 브랜치 목록 확인
git checkout branch <branch> : 브랜치 이동
git checkout branch -b <branch> : 브랜치 생성과 이동을 동시에!
git stash : stage에서 작업중이던 파일 숨기기
git stash list : stash된 파일 리스트보기
git stash apply : stash된 파일 불러오기
git stash drop : stash된 파일 제거하기
git merge <branch> : 현재 Head에 있는 브랜치에 선택한 브랜치를 합친다.
git log : 커밋된 로그확인
git shortlog : 커밋된 로그 요약하여 확인



마치며…

기존에 알고있던 Git내용에서 좀더 세세하게 개념을 짚고 넘어간 느낌이다.
이전에는 그냥 뜨문뜨문봐서 몰랏던 내용들도 보이고
전체적인 workflow를 이해하니까 GUI가 없어도
터미널로 작업하기가 상당히 수월했다!!
오늘은 1일1커밋 공부방 시작날이다.

드디어 git을 쓰기시작했으니 우리 공부방도
잔디심기에 다들 적극적으로 참여할듯하다!!
내일부터는 드디어 JAVA문법에 대해서 시작하는데
이번주부터는 정말 집중해서 되짚고 완벽히 이해하면서

공부해 나아갈 예정이다.


오늘의 커피량: ☕️ ☕️ ☕️ ☕️ ☕️️️️️
오늘의 점심: 된장찌개, 김, 참치, 공기밥