개발일기/Git

Git 기초 배우기

DongKeun2 2022. 1. 14. 09:57

Git 기초

Git 초기 설정

최초 한 번만 설정합니다.

매번 git을 사용할 때마다 설정할 필요가 없습니다.

  1. 커밋 작성자 정보 등록
  2. $ git config --global user.email <깃헙에서_사용할_이메일> $ git config --global user.name <깃헙_닉네임>
  3. 커밋 작성자 정보 확인
  4. $ git config --global -l 또는 $ git config --global --list
  5. 커밋 작성자 정보 변경(이 후 커밋 작성자 정보 등록 다시 실행)
  6. $ git config --global --unset user.email $ git config --global --unset user.name

Git 기초 명령어

로컬 저장소

  • working directory : 사용자의 일반적인 작업이 이뤄지는 곳.
  • staging area : 커밋을 위한 파일 및 폴더의 변경사항들이 (임시로) 저장되는 곳.
  • repository (commits) : staging area에 있던 파일 및 폴더의 변경사항들이 커밋으로 저장되는 곳
  • Git은 working directory(WD) => staging area => repsitory의 과정으로 버전 관리를 수행합니다.

git init

  • 현재 작업중인 디렉토리(폴더)를 Git으로 관리하겠다는 명령어
  • .git 이라는 숨김 폴더를 생성하고, 터미널에는 (브랜치 이름) 라고 표기됩니다.
! 주의 사항 🚫
1. 이미 Git 저장소인 폴더 내에 또 다른 Git 저장소를 만들지 않습니다. (중첩 금지)

2. 절대로 홈 디렉토리(또는 바탕화면)에서 git init을 하지 앖습니다.

3. 혹시라도 실수로 git init을 해버렸다면 아래 명령어로 해결합니다.

 $ ls -a                         (현재 위치에 .git 폴더가 있는 지 확인)
 $ rm -rf .git/                  (.git 폴더 삭제)

git status

  • working directory와 staging area에 있는 파일의 현재 상태를 알려주는 명령어
  • 어떤 작업을 시행하기 전에 수시로 status를 확인합니다.
  • 상태의 종류
    1. untracked : Git이 관리하지 않는 파일 (한 번도 add를 한 적 없는 파일)
      • ex) 처음 생성한 파일
    2. tracked : Git이 관리하는 파일 (이전에 한 번이라도 add를 한 적 있는 파일)
      • unmodified : 최신 상태 (이전 비전에 비해 번경사항이 없는 상태)
      • modified : 수정되었지만 아직 satging area에 올라가지 않은 상태
      • staged : Staging area에 올라간 상태
    • 파일 라이프 사이클
    git file lifecycle 사진

git add

  • working directory에 파일을 staging area로 옮기는 명령어
  • git이 해당 파일을 추적(관리)할 수 있도록 만듭니다.
  • 여러 파일을 옮기기 위해서는 공백으로 구분을 지어줍니다.
  • untracked, modified => staged 상태를 변경합니다.
    • 예시
# a.txt만 staging area에 올리는 명령어입니다.

$ git add a.txt
# a.txt, b.txt를 staging area에 올리는 명령어입니다.

$ git add a.txt b.txt
# 현재 디렉토리의 모든 파일을 staging area에 올리는 명령어입니다.

$ git add .

git commit

  • staging area에 올라온 파일의 변경 사항을 하나의 버전(커밋)으로 저장하는 명령어
  • 커밋 메세지 는 현재 변경 사항들을 잘 나타낼 수 있도록 의미 있게 작성하는 것을 권장합니다.
  • 각각의 커밋은 sha-1 알고리즘 에 의해 반환된 고유의 해시 값을 ID로 가집니다.

git log

  • 커밋의 내역(Commit ID, 작성자, 작성 시간, 커밋 메세지 등)을 조회할 수 있는 명령어
  • 옵션
    • --oneline : 커밋 메세지를 한 줄로 축약해서 보여줍니다.
    • --graph : 브랜치와 머지 내역을 그래프로 보여줍니다.
    • --all : 현재 브랜치를 포함한 모든 브랜치의 내역을 보여줍니다.
    • --reverse : 커밋 내역의 순서를 반대로 보여줍니다. (최신 커밋이 아래로 가도록 설정)
    • -p : 파일의 변경 내용도 같이 보여줍니다.
    • -2 : 원하는 개수 만큼의 커밋 내역을 보여줍니다.
      • 2대신 다른 숫자 가능

원격 저장소

git remote

  • 로컬 저장소에 원격 저장소를 등록, 조회, 삭제 할 수 있는 명령어
  1. 원격 저장소 등록
    • git remote add <원격저장소 이름> <원격저장소 주소> 형식으로 작성합니다.
    $ git remote add origin <{url}>
    
    [풀이]
    원격 저장소를 origin이라는 이름으로 추가합니다.
  1. 원격 저장소 조회
    • git remote -v를 작성합니다.
    $ git remote -v
    
    [출력 예시]
    origin https://github.com/내_깃헙_닉네임/git_repository_name.git (fetch)
    origin https://github.com/내_깃헙_닉네임/git_repository_name.git (push)
  2. 원격 저장소 연결 삭제
    • git remote rm <원격저장소 이름> 형식으로 작성합니다.
      $ git remote rm origin

git push

  • 로컬 저장소의 커밋을 원격 저장소에 업로드하는 명령어
  • git push <원격저장소 이름> <브랜치 이름> 형식으로 작성합니다.
$ git push origin master

[풀이]
나의 브랜치의 변경 이력들을 staging area에서 remote repository에 전송합니다.

느낀점

이 외에도 다양한 git 명령어가 있지만 일단 이 정도를 알아두면 대충 찾아보며 사용할 수 있을 것 같습니다.
다음에는 작업환경이 바뀌었을 때 remote repository에 저장된 변경사항들을 local repository로 가져오는 명령어에 관련된 글을 작성해볼까 합니다.

매일 남기는 말

배워가는 단계에 있는 새싹 개발자입니다. 오탈자나 틀린 정보가 있다면 알려주시면 감사하겠습니다. 행복한 하루 되세요🐹