[GitGithub] 깃, 깃허브 제대로 배우기(1)

yoon052·2023년 3월 27일
0

GitGithub

목록 보기
1/3
post-thumbnail

드림코딩 git & github 를 듣고 정리한 내용을 작성합니다.

이 강의는 깃을 설치(셋업)해 설치하는 것부터, 깃을 제대로 배우고 기초적인 명령어들을 익혀, 깃허브를 통해서 협업하는 방법뿐만 아니라, 깃을 능수능란하게 쓸 수 있는 프로팁까지 알려주는 강의이다.

이 강의는 터미널과 소스 트리 2가지를 병행을 통해 알아갈 수 있도록 진행한다.


- 깃 셋업(설치)

깃은 명령어를 기본으로 하는 명령어 프로그램이다.

  1. 터미널(terminal)

터미널에서 커멘드로 배워야 깃을 정확하게 사용하는 방법을 익힐 수 있다. 물론 UI도 많이 있다.

깃 공식사이트에 방문하면 사용할 수 있는 깃 UI 어플리케이션에 대해 알아볼 수 있다. 각자의 운영체제를 선택한 후 스크롤 하면 확인해볼 수 있다.

  1. 소스트리(sourcetree)

깃허브 데스크톱이라는 어플리케이션을 들어본 적이 있을 텐데 터미널에 비해 할 수 있는 것이 많이 없는 편이다. 그래서 깃허브 데스크톱 대신 아틀라시안에서 만든 소스트리를 개발자들이 전반적으로 많이 이용한다. 기본적으로 간단한 기능들을 많이 포함하고 있어서 쓰기 좋다. 그래도 터미널을 통해 순수 명령어를 사용하는 것보다는 기능들이 더 작게 포함되어 있다.

  1. 깃크라켄(gitkraken)

화려한 UI를 좋아한다면 깃크라켄을 추천한다.

깃을 처음 배울때 깃의 기능이 완벽히 구현된 터미널을 이용해서 명령어로 하나씩 공부하는 것을 추천한다. 강의를 통해서 어떤 경우에는 터미널을 사용하고, 어떤 경우에는 소스트리를 사용할지 배울 수 있다.


터미널

git —version ⇒ 깃의 버전을 확인하는 명령어

깃을 설치 하면 (.gitconfig) 라는 파일 안에 환경설정이 모두 저장되어 있다.

git config —list ⇒ 터미널에서 해당 명령어를 통해 모든 설정 확인가능

git config —global -e ⇒ 편집(edit)모드로 파일을 열게되면, 터미널에서도 설정 확인가능

code . ⇒ 터미널 말고 텍스트 에디터에서 파일을 확인하고 싶다면 텍스트 에디터 통해 설정 확인가능. 텍스트 에디터와 연동해서 사용가능

git config —global core.editor “code” ⇒ 텍스트 에디터가 실행됨과 동시에 터미널도 활성화

git config —global core.editor “code —wait” ⇒ 터미널이 텍스트 에디터가 종료될때까지 대기


user의 이름이나 이메일도 git으로 설정할 수 있다.



운영체제 차이점

git config —global core.autocrlf true ⇒ 윈도우(true)/맥(input)으로 설정

운영체제마다 에디터에서 새로운 줄바꿈을 할때, 들어가는 문자열이 달라진다.

윈도우 → carriage-return 과 line feed가 동시에 들어간다. ex) text \r\n

맥 → line feed 만 들어간다. ex) text \n

내가 수정하지 않아도 운영체제마다 차이가 있어서, 줄바꿈 문자열이 달라져서, 깃 히스토리 등을 확인할 때 문제가 생길 수있다.

⇒ 이 문제를 해결할 수 있는 방법

core.autocrlf 사용하기

⇒ 윈도우에서 true로 설정하면 git으로 보낼때 자동으로 carriage-return 을 없애고 윈도우로 보낼때는 자동으로 carriage-return 을 붙여서 보낸다.

⇒ 맥에서 input으로 설정하면 git으로 보낼때 수정이 없지만 carriage-return 을 삭제한다. 왜냐하면 맥에서 복사 붙여넣기 작업을 할 때 실수로 carriage-return 이 들어갈 수도 있기 때문이다.


  • 학습 방향

깃에 관련된 전체적인 명령어에 대해서 이해하고 사용하는 연습을 한다.

깃은 명령어 단위로 이루어진 간단한 프로그램이다. 터미널에서 깃을 이용하는 연습을 해보자.

깃은 간단하게 → ( git + 명령어 ) 형식으로 이루어져 있다.

명령어에는 config, commit, add 등이 있는데, 이것들이 무엇이고 어떤일을 하는 명령어인지 어떤 경우에 쓰면 좋을지 알아보자.

명령어 다음에 옵션이라는 것이 있는데, 어떤 옵션인지에 따라 조금씩 다른 방식으로 진행된다.

자주 사용되는 명령어, 옵션들을 위주로 학습해보자.

터미널 뿐만 아니라 UI 어플리케이션을 통해 좀 더 시각적으로 어떻게 활용할 수 있는지 알게 된다.

깃 공식사이트 문서 탭에서 래퍼런스 메뉴를 선택하면, 이용가능한 모든 명령어를 확인할 수 있다.

모든 명령어를 다 공부할 필요는 없고, 자주 사용되는 명령어 위주로 공부할 것이다.


  • 실습

(터미널 명령어도 추가로 공부하면 좋음)

깃 이라는 디렉토리를 만들고, 깃 디렉토리로 이동해 git init을 통해 깃을 초기화한다.

본인만의 프로젝트 폴더(projects)를 정하고 그 안에 git 이라는 디렉토리를 만들어보자.

mkdir git ⇒ git이라는 디렉토리 생성하는 명령어

git init ⇒ 깃 초기화하는 명령어

git init 으로 .git 이라는 폴더가 생성된다.

.git 폴더는 숨겨져서 ls 명령어로 폴더를 찾을 수 없다.

open .git ⇒ .git 폴더의 내부를 확인하는 명령어

git을 초기화 하면 master 라는 브랜치가 기본적으로 생성된다.

기본적으로 commit을 통해 버전을 관리하는 브랜치는 master 브랜치이다.


rm -rf .git git ⇒ .git 폴더를 삭제하는 명령어


UI

sourcetree를 이용해 git_second라는 프로젝트를 생성할 수 있다.


git status ⇒ git 상태를 볼수 있는 명령어

git config --global alias.st status ⇒ 반복되는 명령어(status)를 조금 단축해서(st) 사용하고 싶을 때 사용하는 속성값 alias


git에는 명령어와 명령어에서 사용할 수 있는 다양한 속성값이 존재한다. (공식사이트 링크)

git config --h ⇒ 명령어와 명령어에서 사용할 수 있는 다양한 속성값들 확인가능한 명령어



- 깃 기본지식

깃을 정확하게 이해하기 위해 Git Workflow 를 이해하는 것이 중요하다.

working directroy ⇒ 프로젝트의 파일들을 수정하는 작업하고 있는 공간
staging area ⇒ 버전 히스토리에 저장될 준비가 되어있는 파일들을 옮겨놓는 공간
.git directory(depository) ⇒ 버전의 히스토리를 가지고 있는 공간


예시)
a.txt 를 작업완료해 staging area 에 옮긴다.
.git directory 에 a.txt를 옮기기 위해 commit이라는 명령어를 사용해 깃 버전 히스토리에 저장한다.


.git directory 에 저장된 버전들은 checkout 이라는 명령어를 이용해 언제든지 원하는 버전으로 다시 돌아갈 수 있다.
깃 히스토리는 내 pc(로컬)에만 저장되기 때문에, 문제가 생기면 히스토리를 모두 잃어버릴 수 있다.
이 문제를 방지하기 위해 내 pc에 있던 히스토리(로컬)를 github 같은 서버에 push 라는 명령어를 이용해 나의 git directory 를 서버에 업로드 해둘 수 있다.
서버에서 로컬로 다시 다운로드 받고 싶으면 pull 이라는 명령어를 이용한다.


각각의 버전들에 어떤 정보가 들어있는지 알아보자.
각각의 커밋에는 스냅샷된 정보들을 기반으로 해서 고유한 해시코드가 할당된다.
해시코드를 이용해 버전 정보들을 참조할 수 있다.
커밋에는 id 뿐만 아니라, 어떤 버전인지 알 수 있는 버전 메시지와 누가 작성했는지, 날짜와 시간 등의 정보들을 함께 포함하고 있다.


working directroy

working directroy 는 2가지로 구성된다. ⇒ untracked, tracked


untracked 카테고리 : 새로 만들어진 파일이거나 기존에 존재하던 프로젝트에서 깃을 초기화해 파일 정보가 없을 경우


tracked 카테고리 : 깃이 이미 알고 있는(tracking) 파일


tracking 파일 중에서 수정 유무에 따라서 unmodified, modified 파일로 나눌 수 있다.

unmodified 파일은 이전 버전과 비교해 수정되지 않았다.

modified 파일은 수정되었기 때문에 오직 modified 파일만 staging area 로 옮겨갈 수 있다.

profile
개발자 지망생

0개의 댓글