본문 바로가기
카테고리 없음

Do it! 5일 만에 끝내는 깃&깃허브 입문 - 1~4장

by dustnn 2025. 3. 22.
1장. 깃과 깃허브란?
깃(Git)

 

: 버전 관리 도구(최종본, 최최종본... 이런 거 안 하기 위한)

: 파일의 변경 사항을 추적하고, 필요할 때 과거 상태로 되돌릴 수 있음

: 분산형 구조 (중앙 서버 없어도 사용 가능)

깃허브(GitHub)

 

깃의 원격 저장소(온라인 저장소): 깃 파일 백업 공간 제공

깃은 로컬, 깃허브는 클라우드

ex. A가 작업한 파일을 깃허브에 올리면 B가 다운받아 사용 가능

 

 

=> 버전 관리, 백업, 협업 가능

 

기본적인 리눅스 명령

 

현재 디렉토리 살펴보기

: ~ 가 나타난다면 홈디렉토리라는 뜻

 

1. pwd: 현재 위치

$pwd

 

2. ls: 현재 디렉토리에 어떤 파일 또는 디렉토리가 있는지 확인

$ls

 

-a: 숨겨진 디렉토리도 표시

-l: 파일/디렉토리의 상세 정보 모두 표시

-r: 파일의 정렬 순서 거꾸로 표시

-t: 파일 작성 시간순으로 표시

 

3. 터미널 창 지우기

$clear

 

4. 상위 디렉토리로 이동

$cd ..

 

5. 하위 디렉토리로 이동

: 이동할 하위 디렉토리의 이름

$cd name

 

6. 홈 디렉토리로 이동

 

$cd ~

 

 

7. 디렉토리 생성

$mkdir

 

8. 디렉토리 삭제

 

$rm -r test

 

9. 터미널 삭제

$exit

 


2장. 깃 설치와 기본 설정

 

git init

 

$git init

  • 현재 폴더를 깃 저장소로 사용하기 위해 초기화
  • .git 폴더가 생성됨 -> "저장소"
버전 만들기

 

- 스테이지: 버전으로 만들 파일들이 대기하는 장소 -> 버전 4개면 스테이지 4개

- 저장소: 스테이지에서 대기하던 파일을 버전으로 만들어 저장

 

<git add>

: 작업트리 -> 스테이지

쉽게 말해, 임시저장하는 것이라고 보면 된다.

$git add .

 

<git commit>

: 스테이지 -> 저장소

쉽게 말해, 진짜로 새 버전을 올린다는 것이다.

$git commit

(실습)비주얼 스튜디오 코드에 작업 폴더 연결

 

비주얼스튜디오에 아까 만들어 놓은 저장소 .git 파일을 드래그해 업로드하면 된다. -> 작업 폴더로 추가됨

hello.txt라는 문서를 만들고 내용 저장

 

untracked files라고 하는데, add를 해야 한다는 것이다.

즉, 지금 상태는 다음과 같다.

 

 

<add>

 

add 완료한 지금 상태다.

 

<commit>

 

그럼 다음과 같이 commit할 것 없음이 뜬다.

 

 

<git log: 저장된 버전 확인>

저장한 "message 1"이 출력된다.

 

 

<스테이징, 커밋 한 번에 하기>

 

 

ㄴ add와 commit이 한 번에 된 게 보인다.


3장. 브랜치 알아보기

 

 

브랜치가 필요한 이유

 

<버전관리를 위해 필요>
google과 apple 모두에게 서비스를 제공해야 한다고 할 때 공통된 부분은 중복이 발생

<수정할 때 용이>

* 브랜치: "최신 커밋된 부분을 가리키는 포인터"

* 분기
: 새로 추가하는 기능이나 코드 수정 사항은 새 브랜치로 만들어 작업 가능

 

* 병합
: 기존 메인 코드에서 브랜치를 따로 만들어 기능  추가하거나 오류 수정 후 그 브랜치 안에서 모든 것이 해결되면 main 브랜치에 병합

 

실습

 

1. 새 폴더 만들고 초기화

 

$git init

 

2. 다음과 같이 txt 파일 만든 후

 

3. 커밋 메시지는 "work 1"으로 지정

 

$git add work.txt
$git commit -m "work 1"

 

4. 그럼 다음과 같이 git log 내용을 확인할 수 있다.

(Head -> main): "HEAD가 현재 main이라는 브랜치를 가지고 있다."

=> (HEAN -> main)이 최신 커밋

5. 더 커밋해보자

 

$git commit -am "work 2"
$git commit -am "work 3"

 

 

 

새 브랜치 만들기

 

<git branch: 브랜치를 만들거나 확인>

$git branch

 

여태껏 Main에서 작업 중이었음

 

 

<git branch 브랜치명: 새로운 브랜치 만들기>

$git branch 브랜치명

 

 

log화면을 보자.

 

위처럼 (HEAD -> main, apple) 로 바뀌었다.

저장소에 main과 apple 두 개의 브랜치가 있고 현재 작업하는 브랜치는 main이라는 뜻이다.

 

추가로 해보자. 다음과 같이 google, ms라는 브랜치를 추가하면

 

main 브랜치뿐 아니라 ms, google, apple 브랜치에서도

최신 커밋은 "message 2" (앞에 부분 실습 안 해서지, 했으면 "work3"일 것이다.)

 

다음과 같이 txt 파일에 "main work4"라는 메시지를 커밋하면

 

다음과 같은 log 확인 가능

 

너무 장황하니까 --online 옵션을 주고 보자

 

$git log --online

 

 

main work4는 main 브랜치에만 적용되어 있고,

apple과 google, ms 브랜치는 아직 message2 커밋 상태

=> 새로 만든 커밋은 현재 브랜치에만 적용되고 나머지 브랜치에는 적용되지 않음 !! => 버전 관리에 용이 !!

 

브랜치 전환하기

 

$git switch

 

 

"HEAD -> apple" 을 보아 작업 브랜치가 apple로 바뀐 것을 알 수 있다.

 

전환한 브랜치에서 커밋하기

 

apple 고객사 고객들만을 위한 apple.txt 를 따로 만들어준다.

 

git add와 commit을 해준다.

 

apple로 메인 브랜치가 전환되었고, 최신 커밋은 "apple work4"

 

브랜치와 커밋 관계 알아보기

 

<git log --branch: 브랜치마다 최신 커밋 보여줌>

 

 

현재 브랜치: apple

최신 커밋: apple work4

main 브랜치의 최신 커밋: main work4

ms 브랜치와 google 브랜치의 최신 커밋: message2

 

<git log --graph: 그래프로 표현>

 

빨간색 수직선은 커밋과 커밋 간 관계를 보여줌

"apple work4 커밋의 부모를 찾아가면 message2이다"

"main work4 커밋의 부모를 찾아가면 message2이다."

=> main브랜치와 apple브랜치는 message2커밋까지는 같고 그 이후부터 버전에 따른 다른 커밋 존재한다는 뜻..

 

 

<git log ..: 브랜치 간 차이점 보여줌>

 

다음은 main 브랜치에는 없지만 apple 브랜치에만 있는 커밋 보여줌

=> "apple work4"

 

 

 

브랜치 병합하기

 

새로운 파일을 만들고 work.txt 를 만들어 1 저장

 

$git add "work.txt"
$git commit -m "work1"

 

 

"o2"라는 브랜치를 추가하면

$git branch o2

 

다음 그림처럼 main과 o2 모두 "work1" 이라는 커밋 가지고 있음

 

 

 

main.txt 만들어 "main2" 저장

 

commit
commit 결과 HEAD가 main브랜치의 최신 커밋인 "main work2" 가리킴

 

ow라는 새로운 브랜치 만들고
브랜치 전환
전환된 브랜치인 ow에서 커밋 "ow work2"

 

현재까지 상황

현재 브랜치: o2

o2의 최신 커밋: o2 work2

 

git status

 

 
git status
  • 현재 파일 상태 확인 (수정됨, 추가됨, 커밋 안됨 등)
git diff
 
git diff
  • 워킹 디렉토리와 스테이징 영역의 차이 확인
 
git diff --staged
  • 스테이징 영역과 마지막 커밋의 차이 확인
커밋 로그
git log
  • 커밋 히스토리 출력
 
git log --oneline