포스트

Git 간단한 정리

오래간만에 깃을 쓰니 헷갈려서 정리한다.

현재 쓰고 있는 키보드이다

이글도 이 키보드로 작성중이다.

깃 너란녀석…

다시 본론으로 들어가자.

깃이란?

우리가 프로그래밍을 공부할때 깃이라는 단어를 수없이 듣게 된다.

그렇다면 깃은 도대체 어떤녀석이길래 모두가 깃을 쓰는걸까?

나무위키에는 다음과 같이되어있다

  • 리누스 토르발스가 개발한 분산형 버전 관리 시스템.

분산형 버전관리 시스템이란?

분산형 버전관리 시스템 (Version Control System)은 간단하게, 문서나 설계도 또는 코스 코드등의 변경점을 관리해주는 소프트 웨어이다.

우리가 보통 업무를 하거나, 과제를 하다보면 어떠한 작업물을 만들고, 이것을 한번에 완성본으로 하지 않는다.

보통 여러번의 수정을 걸쳐 만들게 된다.

나의 경험은 파일명 뒤에 (rev.1) (rev.2) 이런 식으로 어떤 것을 만들었을때 기존에 있던것과 새롭게 추가한것을 비교하기 위해 새롭게 파일을 저장하는 편이다.

이런경우가 버전 관리 없이 문서를 작성하는 경우이다.

아마 모두가 해봤을 경험이다.

하지만 분산형 버전관리 시스템을 사용하게되면 다음과 같이 관리가 가능해진다.

  1. 변경점 관리

    • 어떤 내용을 누가 작성 했고 어느 시점에 했는지를 확인 할 수 있다.
  2. 버전 관리

    • 특정 시점에 Tag를 달아 버전을 표시해주고, Branch 등으로 동시에 여러 버전을 개발할 수 있게 한다.

    • Branch란?

      • 소스 버전을 관리하기 위한 개념으로, 복사본의 개념으로 생각하면 된다 우리가 Branch의 의미 그대로 받아들이면된다.

      • 보통 뜻으로는 나뭇가지가 있지만, 지점이라는 의미도 있기에, 여기서는 하나의 지점으로 관리를 한다라고 이해하면 더 받아들이기 쉬워 보인다.

  3. 백업 & 복구

    • 무언가 잘못되었을때 다시 특정시점으로 복구가 가능하고, 데이터가 날아가더라도 복원이 가능하다.
  4. 협업

    • 같이 일하는 사람에게 변경점을 쉽게 공유를 할 수 있다.

자주 사용하는 명령어

git init

깃을 시작하는 명령어. init 말그대로 Initialization으로 초기화를 해주는 개념이다 .git 이라는 숨김 폴더가 만들어진다. 여기에 우리가 폴더에서 변경한 모든 내용들이 저장된다. 만약 이 .git 숨김폴더를 지우면 깃으로 변경사항을 추적할 수 없다!

git status

status말그대로 현재 상태를 확인 할 때 쓴다. git add나 git commit을 하지않으면 untracked 상태로 된다.

git add

수정한 파일을 스테이징 할때 쓴다.

git commit -m “msg”

파일을 로컬저장소에 저장 및 메시지 입력. 커밋 전에 반드시 add 명령어로 스테이지 상태를 거쳐야 비로소 커밋을 만들 수 있다.

git commit 까지만 쓰면 vi가 open이 되면서 commit 내역을 더 자세하게 쓸 수 있다. (나갈땐 :q) git commit -am 을 쓰면 add와 commit, 즉 스테이징과 커밋단계를 한번에 할 수 있다

이전 커밋에 변경사항을 추가하고 싶을 때는 git commit –amend 명령을 사용한다.

주의 할점이 이전 커밋에 현재의 변경 내용을 추가하는 것이다 nothing to commit 되면 ok

git status의 변화

git add 하기 전 git status -> red

git add 한 후 git status -> green

git commit 후 git status -> nothing to commit

(바로 클론으로 가져오고나서 status 한 상태)

git log

이때까지 commit된 작업들을 볼 수 있다. 맨 위가 가장 최근에 한 작업이다 git log –graph 도 한번 써보자.

git show

커밋에 변경 내용이 반영되었는지 확인

git remote add origin Repository 주소

우리가 만든 레파지토리를 origin이라는 이름으로 원격저장소 주소를 등록, git remote는 원격저장소를 관리하는 명령이다. -> git remote -v를 통해 잘 연결되었는지 확인한다.

git remote remove origin

원격저장소를 지움.

git branch

내 브랜치를 확인.

git branch name main

기준이 되는 main 브랜치에 새로운 브랜치 name을 생성하는 명령

git checkout 브랜치명

브랜치를 이동하는 명령. 처음에는 기준이 되는 master 또는 main 브랜치로 자동으로 설정이 되어있다. 위에서 브랜치를 새로 만든후 git checkout 명령으로 만든 브랜치 명을 써주면 그 브랜치로 이동가능! git branch 명령을 쓰면 *표시가 우리가 만든 브랜치 앞에 찍힌것을 볼수 있다. 만들고 바로 그 브랜치로 이동하고 싶다면 git checkout -b 브랜치명 하면 된다

git branch -M main

브랜치를 main으로 바꿈. 가끔 git init을 하게되면 branch가 master로 되어있는 경우가 있다. 나의 경우엔 main으로 사용하는게 익숙해져있어서 main으로 바꿔준다.

예전에는 master - slave 구조로 사용을 하였는데, 이제는 slave자체가 노예라는 어감자체가 좋은 단어는 아니기에 master에서 main으로 넘어가고 있다. (이미 다 넘어갔을지도?)

git clone Repository 주소

원격저장소를 자신의 컴퓨터에 복제하게 된다. 이때 주소 뒤에 . 을 붙이면 현재 터미널에서 사용중인 디렉토리에 설치가 되고, . 을 붙이지 않으면 현재 사용중인 디렉토리에서 디렉토리를 하나 더 생성하고 그안에 복제가 된다.

git push origin 브랜치명

원격저장소(origin)에 해당 브랜치에 있는것들을 집어넣는다.

git pull origin master

원격 저장소에서 파일을 내려받는다.

.gitignore

추적하지 않을 파일들의 명단을 적어놓은 것. 괜히 여기에 아무것도모르고 이그노어 했다가 공부한게 올라가지 않았다. 나의 경우엔 git init이 되어있는 디렉토리에서 touch .gitignore 를 하여 먼저 .gitignore file을 생성해준다.

명령어는 아래와 같다.

1
touch .gitignore

터미널에서 touch file명을 해주면 0kb의 아무내용도 없는 file 하나가 만들어진다. 그다음 vim 이나 다른 editor를 통해서 gitnore할 내용을 작업한다. 이렇게 .gitignore 안에 내용이 들어가게되면 add / commit / push할때 해당 내용은 제외 하고 올라간다.

이름 그대로 ignore해주는 것이다. 아래 사진은 vscode를 통해 깃블로그에 ignore할 내용을 추가한것이다.

git reset –hard commitnumber

일종의 원복 개념으로 이해하면 된다. (도르마무)

우선 commitnumber를 알려면 git log를 해야한다.

그리고 내가 원하는 시점의 commitnumber를 복사하여

붙여넣고 실행하면 돌아간다.


그리고 udemy특성상 깃에서 clone하여 수업이 진행되기때문에 다시 add하고 commit push를 할때 에러가 발생한다. 반드시 그 디렉토리 안에 있는 .git파일을 제거해줘야한다. (clone하자마자 해줘야겠다…)

  1. 해당 디렉토리를 들어가서
  2. rm -rf .git 을하여 .git 파일를 제거하고
  3. git rm –cached . -rf 스테이지도 제거해준다.

그리고 혹시나 여러 디렉토리를 같은 작업하였다면. git add -A를 하여 모든 디렉토리를 스테이징 해주고 commit후 git push orgin main을 하여 올려주면 된다.


혹시나 깃 계정에 대해 재설정을 Terminal에서 해야하는 경우

git config –global user.email

이메일을 설정

git config –local user.name

유저의 이름을 설정

CleanShot 2024-09-06 at 01 12 56@2x

push를 하게되면 유져명과 비밀번호를 입력하라고 뜨는데,

비밀번호는 깃비밀번호가 아닌 토큰값이다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.