[SK 쉴더스 루키즈] Git & Github

2026. 4. 28. 13:19·Security/SK Shieldus Rookies

Git의 기본 개념을 알아보고 Git과 Linux의 명령어를 알아보자.

 

 

기본 Linux 명령어

  • pwd : 현재 경로
  • start . : 현재 디렉토리를 window 탐색기로 열기
  • mkdir : 디렉토리 생성
  • rm :
    • rm -rf : recursively(재귀적으로, 하위 폴더까지 순차적으로 삭제) force(다른 사용자가 있어도 강제 삭제)
  • ls :
    • ls -al : 숨긴 항목까지 리스트화해서 보여라
  • touch [파일 이름] : 파일 생성
  • cat [파일 이름] : 파일 내용 출력

 

Git의 기본(스테이지)

기본적으로 Git은 버저닝을 위한 툴이다. 프로젝트의 규모가 커지면 코드를 수정하기 전 기록을 남기고 싶은데, 과거의 정보가 없이 프로젝트를 진행하다 보면 이를 수정하고 관리하는데 힘들어지기 때문이다. 이를 위해 개발자들은 '버전'이라는 개념을 만들어 과거의 정보를 저장하기 시작했다.

 

Git은 이러한 '버전'을 남기는데 도와주는 시스템으로 버전 관리 시스템을 이용하면 버전관리는 물론 변경점관리, 백업 및 복구, 협업에 큰 이점이 있다.

 

Git의 로컬 저장소에는 working tree(working directory), stage(staging area, index), repository라는 3개의 공간이 존재한다. 각각이 어떤 역할을 하는지, 왜 이런 단계를 만들었는지 알아보자. 

 

Git Stage

 

1️⃣ working tree(working directory)

working tree는 개발자가 작업하는 공간이다. 개발하고 있는 소스 파일이 위치해 있는 폴더(directory)라고 생각하면 된다. 우리가 코드를 수정하고, 새로운 파일이나 폴더를 생성하는 것 모두 이 작업 디렉터리에서 일어나는 일이다.

 

2️⃣ stage(staging area)

하나의 버전으로 들어갈 후보 파일들을 담아 놓는 공간이다. 무언가를 만들기 전 공구들을 준비해 놓는 작업대이다.

git add 명령어로 담는다.

 

3️⃣ repository

하나의 버전으로 담긴 파일들을 보관하는 공간이다. 그 순간을 포착한다는 의미 해서 파일들의 스냅샷을 저장해 놓는다.

git commit 명령어로 진행한다.

 

 

Git 기본 명령어

  • git status 
    • 현재 있는 브랜치, git이 추적하고 있는 파일 상황을 보여줌.
On branch main

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        story.txt

nothing added to commit but untracked files present (use "git add" to track)

위 내용을 보면 깃이 추적하는 파일이 없다고 나온다. 추적하게 하려면 git add를 이용해 working directory에 넣어야 한다.

 

  • git add 
    • . : 현재 경로에 있는 모든 파일을 git을 통해 추적
    • staging, 로컬 저장소에 저장을 위한 사전 저장
    • rm
      • 최초 생긴 파일은 rm —cached로 add 한 거를 삭제한다.
    • restore
      • 한 번 추적되기 시작한 파일은 restore로 add한거를 삭제한다.
$ git status
On branch main

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   story.txt
$ git status
On branch main
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   story.txt

 

  • git commit
    • -m “” : 커밋 메시지를 설정하고, 스테이징 된 파일들을 커밋한다(하나의 스냅샷, 버전으로 만듦)
    • git commit -am :
      • 한 번 추적되기 시작한 파일은 add와 commit을 동시에 할 수 있다.
      • 겁나 편하다!
$ git commit -am "second commit"
[main 0b56cc9] second commit
 1 file changed, 2 insertions(+), 2 deletions(-)

 

  • git diff
    • 파일의 변경 사항을 보여줘라
diff --git a/story.txt b/story.txt
index 72547bc..494b518 100644
--- a/story.txt
+++ b/story.txt
@@ -1,4 +1,4 @@
 첫 만남은 너무 어려워
-계획대로 되는 게 업서서
+계획대로 되는 게 없어서
 첫 만남은 너무 어려워
 내 이름은 말야
\\ No newline at end of file

 

  • git log :
    • 커밋 목록을 보여줘라
    • git log --oneline
$ git log
commit 0b56cc9b866407510418c11fa3b3daa1bd552617 (HEAD -> main)
Author: BestTomaTo <spacejin2000@naver.com>
Date:   Fri Apr 24 15:06:18 2026 +0900

    second commit

commit e14c269549e45800c66438ad8b75e61c7621d99d
Author: BestTomaTo <spacejin2000@naver.com>
Date:   Fri Apr 24 14:58:30 2026 +0900

    first commit
0b56cc9 (HEAD -> main) second commit
e14c269 first commit

 

 

Git 심화 명령어

  • git reset 

리셋 명령어는 버저닝을 하는 과정에서 굉장히 중요한 명령어다. 이 리셋에도 3가지 종류의 명령어가 있다.

git reset 명령어

  • git reset —soft : 커밋하기 전으로 (파일 수정 + add는 남아 있음, 커밋 메세지 수정)
  • git reset —mixed : 커밋과 add 하기 전으로 (파일 수정만 남아 있음)
  • git reset —hard : 파일도 아예 수정이 안되어 있는 수준으로 되돌린다.
    • git reset —option [커밋 ID]
    • [커밋 ID]는 되돌아가고자 하는 커밋 ID를 입력한다. 삭제하고자 하는 게 아니라.

실제로 많이 사용하니 꼭 알아두자.

 

  • git checkout
$ git checkout 0b20c9d
Note: switching to '0b20c9d'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

HEAD is now at 0b20c9d T

git checkout 명령어는 내가 있는 브랜치를 확인하는 명령어이다. 위 코드의 내용은 0b20c9d 커밋에서 하나의 브랜치를 뽑아나간다는 소리다. 이건 나중에 main 브랜치에 합쳐질 수도 있고 브랜치 자체가 사라질 수 있다. 기능 개발과 협업을 원활하게 하기 위해 진행한다.

 

커밋 ID 값이 0b20c9d에서 분기가 시작된 브랜치 모습

 

  • git push -u
    • git push —set-upstream origin main와 같다!
    • 로컬 저장소 커밋 트리를 원격 저장소 커밋 트리와 연결하는 작업이다.
    • 로컬 저장소와는 달리 원격 저장소에 이미 커밋이 진행됐을 수도 있기 때문이다.

 

  • git clone 주소
    • 깃허브가 프로젝트 이름으로 폴더를 이미 만들어줌.
    • 그냥 원하는 디렉토리에 가서 그냥 클론 해주면 된다!
    • 이걸 몰라서 맨날 폴더 2개 생겼다.
    • 만약 다른 곳에서 클론하고 다시 원격저장소로 올릴 때는 토큰이나 로그인이 반드시 필요하다.
    • 만약 .gitignore로 빠진 파일이 있다면 다시 넣어줘야 한다.

 

  • git merge 대상 브랜치

 

 

추가

  • github을 토큰으로 연결할 때는 리눅스 서버에서 터미널로 할 때 사용
    • 이제 아이디, 비밀번호는 막히기 때문에 이걸 써야 한다.

 

  • vscode 편집기로 git 명령어 없이 github 이용하기
    • 왼쪽 메뉴의 Source Control 메뉴를 확인하기

 

  • .gitignore 파일 활용하기
    • vscode에서는 ‘U’ 자가 사라진다. 아예 트래킹을 안 한다는 뜻이다.
    • 추적하기 전에 막는 게 제일 중요하다.
    • pw.txt를 안 올라가게 막았다.

 

'Security > SK Shieldus Rookies' 카테고리의 다른 글

[SK 쉴더스 루키즈] Notion API 연동 실습  (0) 2026.05.06
[SK 쉴더스 루키즈] Python 문법 1  (0) 2026.04.29
'Security/SK Shieldus Rookies' 카테고리의 다른 글
  • [SK 쉴더스 루키즈] Notion API 연동 실습
  • [SK 쉴더스 루키즈] Python 문법 1
BestTomaTo
BestTomaTo
  • BestTomaTo
    기록보관소
    BestTomaTo
  • 전체
    오늘
    어제
    • 분류 전체보기 (36) N
      • Algorithm (8)
      • Computer Science (3)
      • Backend (3)
      • DevOps (4)
        • Kubernetes (3)
        • Docker (0)
      • Data Engineering (8)
      • Cloud (2)
      • AI (1)
      • Security (3) N
        • SK Shieldus Rookies (3) N
      • Reference (2)
      • Project (1)
      • Experience (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    동기 프로그래밍
    홈 서버
    langchain memory
    sql 개발자
    3단계 모델링
    해커톤 후기
    langsmith
    airlfow
    AWS
    SQLD
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
BestTomaTo
[SK 쉴더스 루키즈] Git & Github
상단으로

티스토리툴바