Git 명령어: 기본적인 개념과 사용법

2022. 9. 6. 01:51·Programming/Git, Github

Git/GitHub 기본 개념

이 내용은 evan-moon님의 블로그 내용을 기반으로 정리 및 수정한 글입니다.

 

Git과 GitHub이 무엇이고 왜 필요할까?

아마 이런 상황을 피하려고 만들어졌을 것이다

`git`은 분산형 버전 관리 시스템이다. 소스 코드 등의 변경사항, 즉 버전을 관리해주는 시스템인 것이다. `git`은 다음과 같은 프로세스를 위한 개념이다. 원격(remote)에 있는 코드를 로컬(local, 내 컴퓨터)로 가져와서 로컬에서 수정한 변경사항을 원격 저장소로 업데이트하는 과정이다.

`git`을 다룰 때, 이 원격(remote)과 로컬(local)을 항상 구분지어 생각하는 것이 중요하다!

 

로컬 저장소에서 발생한 변경사항을 원격 저장소에 업로드하는, 즉 서버로 밀어올리는 행위를 `Push`라고 부른다. 서버의 소스를 자신의 로컬로 가져오는 행위를 `Pull` 또는 `Fetch`라고 부른다. 원격 저장소는 구글 드라이브와 같은 클라우드 스토리지와 비슷하게 생각하면 된다. 전 세계 어딘가에 있는 서버에 우리의 소스를 저장하는 것이다. 이때 이 서버를 제공해주는 대표적인 서비스가 `GitHub`인 것이고 이 외에도 `GitLab`, `Bitbucket` 등이 있다.

저장소(repository)는 앞으로 `repo`라고 표현하겠다!

 

`Git`: 리누스 토르발스가 개발한 분산형 버전 관리 시스템
`GitHub`: Git 저장소 호스팅을 지원하는 웹서비스

 

`git`을 사용할 때는 내가 어떤 원격 서버에 변경사항을 업로드 할 것인지 정해야하는데, 기본적으로 사용되는 이름이 바로 `origin`이다. 보통은 한 개의 원격 서버만 운용하는 경우가 많기 때문에 `origin`과 `remote`를 혼용해서 부르곤 한다.

 

주요 명령어

간단하게만 훑어보고 사용법으로 넘어가자!

출처: https://programming.earthonline.us/you-can-master-git-git-commands-with-these-diagrams-40a0b2f5cc42

명령어 설명
git clone remote → local / 원격 저장소를 복제해 새 디렉터리로 가져옴
git add (선택하기) 변경사항을 stage에 올림 (보통 staging한다고 표현)
git commit (포장하기) 변경사항을 local repo에 기록 / `-m` 옵션을 통해 커밋 메시지 작성 (git commit -m "커밋 메시지")
git push (보내기) local → repo / 로컬의 변경사항을 원격에 업데이트
git pull remote → local / 원격의 변경사항을 가져온 뒤, 로컬 브랜치에 자동으로 병합
git fetch remote → local / 원격의 변경사항을 가져오지만, 로컬 브랜치에는 영향을 주지 않음
git status stage의 상태를 표시
git log commit 기록을 표시 / `--oneline` 옵션을 통해 한 줄로 표현
git restore stage에서 제거: git restore --staged <파일명>

 

`git`을 통한 협업이나, 브랜치 등 심화 활용법은 다음 포스트에 정리했다.

 

사용법

Git 설치

다음의 git 공식 사이트에서 다운로드 받으면 되지만, Mac OS의 경우 Homebrew로 간단하게 설치할 수 있다.

brew install git

 

원격 저장소 생성

먼저, 원격 저장소(Remote Repository, `remote repo`)를 만들어보자. GitHub과 같은 서비스에서 원격상의 서버를 만들고, 그걸 내 로컬과 연결시키는 개념이다. 우선, GitHub에 로그인하여 우측 상단 프로필 아이콘을 클릭하고, 내 프로필에 들어가서 `Repositories` 탭으로 들어간다. 우측 상단의 초록색 `New` 버튼을 누른 뒤, Repository name을 입력하고 일단 다른 Configuration 옵션은 선택하지 않은 채로 아래의 `Create Repository` 버튼을 눌러 `repo`를 생성한다.

 

로컬 저장소 생성

다음으로 로컬 저장소(Local Repository, `local repo`)를 만들어보자. 로컬(내 컴퓨터)에서 프로젝트를 진행할 디렉토리(폴더)를 생성하고, 다음의 명령어를 통해 터미널에서 해당 경로로 이동한다. 새로 만든 프로젝트 디렉토리로 이동한다. 나의 경우 /Users/syk/PC/git 이라는 경로에서 모든 프로젝트들을 관리할 예정이다.

cd <프로젝트 디렉토리 경로>
cd /Users/syk/PC/git

 

GitHub에서 `remote repo`를 생성하고 나왔던 화면인 다음의 화면을 참조하여 세팅을 진행해보자.

`remote repo`의 주소(https://github.com/kairosial/test.git)를 복사하고 터미널에서 아래와 같이 실행시켜주면 된다.

git clone <복사한 주소>
git clone https://github.com/kairosial/test.git

그럼 해당 경로에 `test` 디렉토리가 생성된 것을 확인할 수 있다. 이렇게 `clone`을 통해 내 로컬에 생성된 디렉토리가 `local repo`라고 볼 수 있다.

 

이제, 내 `local repo` 안으로 이동해보자.

cd <remote repo 생성 시 설정했던 Repository name>
cd test

 

그리고 `ls -al`을 통해 확인해보면, 해당 디렉토리 내부에 `.git`이라는 디렉토리가 생성된 것을 확인할 수 있다. 그리고 GitHub에서 `remote repo`를 생성하고 나왔던 커맨드를 한 줄씩 순차적으로 실행해보자. (`repo`에 대한 초기 설정이라고 볼 수 있다)

echo "# test" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin <Git URL> # local repo와 remote repo를 연결 / 'origin'이 remote repo의 기본 이름으로 많이 사용됨
git push -u origin main # 변경사항을 remote repo(origin)의 main에 업로드하고, 해당 브랜치를 추적하도록 설정

 

※ 참고사항 ※

`remote: Support for password authentication ~` 에러

더보기
 

[Git] Github에서 토큰 인증 로그인

개인 프로젝트를 진행하던 중 아래와 같은 에러 메시지가 발생했습니다. Support for password authentication was removed on August 13, 2021. Please use a personal access token instead. ... The requested URL returned error: 403 이

leveloper.tistory.com

Personal access tokens 설정 후 `git push -u origin main` 명령어를 실행한다. Username에는 Github ID를 입력하고, Password에는 생성한 토큰을 입력하면 된다.

 

※ 참고사항 ※

`git branch -M main`은 왜 필요한걸까?

더보기

https://github.blog/changelog/2020-10-01-the-default-branch-for-newly-created-repositories-is-now-main/

2020년 10월 1일을 기준으로 GitHub에서 새롭게 생성되는 repository의 branch 기본값이 master에서 main으로 변경되었다.그리하여 Git branch의 기본값은 master이고, Github의 branch 기본값은 main이다. `git branch -M main`는 branch 기본값을 main으로 사용하겠다는 뜻이다.

 

 

기본적인 흐름

원격에서 로컬(내 컴퓨터)로 소스코드를 받아온 뒤 변경사항이 생기면, 그 변경사항을 원격에 다시 업데이트하는 흐름이다.

`clone` → 변경사항 발생 → `add` → `commit` → `push`

 

add

원격으로 보낼 변경사항을 `선택`하는 단계

선택된 변경 사항들은 `스테이지(stage)`라고 불리는 공간으로 이동됨

git add . # 현재 디렉토리의 모든 변경사항을 스테이지에 올린다
git add ./src/components # components 디렉토리의 모든 변경사항을 스테이지에 올린다
git add -p # 변경된 사항을 하나하나 살펴보면서 스테이지 올린다

스테이지에 담긴 변경사항들은 `git status` 명령어를 사용하여 확인 가능

git status # 스테이지의 변경사항 확인
git status -v # 어떤 파일의 어떤 부분이 변경되었는지도 확인

 

commit

스테이지에 있는 변경사항을 `포장`하는 단계

이때 포장하는 행위를 `commit`이라고 한다. 하나의 커밋을 하나의 버전으로 정의하기 때문에 상당히 중요하다.

git commit -m 'first commit' # 'first commit'이라는 커밋 메세지로 커밋

프로젝트에서 발생한 모든 커밋 히스토리를 `git log` 명령어를 통해 조회할 수 있다.

git log   # 커밋 히스토리 조회
git log --oneline   # 각 커밋을 한 줄로 간결하게 표시
git log --graph   # 브랜치 병합 및 분기 상태를 시각적 그래프로 표현

 

push

커밋을 통해 포장된 변경사항을 로컬에서 원격으로 `보내는` 단계

커밋을 푸쉬할 때 `git`에게 '어떤 `remote` 서버의 어떤 `branch`로 `push`할 것인지'도 함께 알려주어야한다.

git push <remote repo> <branch>
git push origin main   # origin이라는 remote repo의 main 브랜치로 푸쉬

브랜치 이름이 'main' 정도면 모르겠지만, 'SD-0000-request-api-refactoring'처럼 브랜치 이름을 매번 입력하는 것이 번거로울 수 있다. 그래서 `git`은 브랜치를 자동으로 추적할 수 있는 기능 또한 제공한다.

git push -u origin main
git push --set-upstream origin main

`-u` 또는 `--set-upstream` 옵션을 사용하면 처음 한번만 브랜치 이름을 입력하고 난 후에는 `git push` 명령어만 입력해도 자동으로 처음 입력했던 브랜치로 변경 사항을 푸쉬할 수 있음

 


Ref.

 

Git 뉴비를 위한 기초 사용법 - 시작하기

이번 포스팅에서는 너도 쓰고 나도 쓰고 우리 모두 쓰고 있는 Git의 기초에 대해서 포스팅 하려고한다. 필자는 Git을 대학교 때 처음 접했는데 처음에는 “왠 이상한 클라우드에 소스코드를 올려

evan-moon.github.io

 

#깃허브 #Git 기초 #Git 기본 #Github 기초 #Github 기본

저작자표시 비영리 변경금지 (새창열림)

'Programming > Git, Github' 카테고리의 다른 글

Git 명령어: 심화 활용법  (0) 2025.10.20
[Git/Github] 다른 사람의 repo를 내 repo로 가져오기 (set-url)  (2) 2023.04.26
[Git] git bash 에서 conda 명령어 사용  (0) 2023.03.03
'Programming/Git, Github' 카테고리의 다른 글
  • Git 명령어: 심화 활용법
  • [Git/Github] 다른 사람의 repo를 내 repo로 가져오기 (set-url)
  • [Git] git bash 에서 conda 명령어 사용
카이로셜
카이로셜
  • 카이로셜
    카이로스의 시간
    카이로셜
  • 글쓰기 관리
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Programming
        • Python
        • Linux
        • Git, Github
        • ML, Machine Learning
        • DL, Deep Learning
        • NLP
        • Computer Vision
        • Network
        • PyCharm
      • IT
        • Windows
        • Mac OS
        • Programs
        • 한글
        • Word
        • Excel
        • PowerPoint
      • Math & Statistics
      • English
      • Graduate School
      • etc.
      • Record
  • 블로그 메뉴

    • Github
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    도커
    클래스
    맥북 단축키
    객체
    hotkey
    윈도우10
    윈도우11
    anaconda
    아나콘다 가상환경
    docker
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
카이로셜
Git 명령어: 기본적인 개념과 사용법
상단으로

티스토리툴바