Git, Github, 깃허브 정리 (1)

지구·2023년 7월 16일
0

Git, Github 정리

목록 보기
1/19
post-thumbnail

01. CLI 의 개념

1) cli 와 gui 의 차이

  • 개발자들은 컴퓨터 활용 방식인 CLI(command line interface)에 익숙해져야 한다.
  • 우리가 컴퓨터를 일반적으로 사용하는 폴더를 클릭하는 방식은 GUI(graphic user interface)이다.

글로만 이루어진 화면(terminal, powershell)에서
1. 어떤 폴더에 들어와있는지 구별
2. 어떤 명령어를 입력하면 어떤 동작이 수행되는지
를 알아야한다.

2) cli 기반으로 폴더 만들어보기

  1. 명령어를 입력하기 위한 창 표시

  • spotlight에 '터미널'을 입력하고 실행 시킨다.
  • 윈도우
    검색 창에 'powershell'을 입력하고 실행 시킨다.
  1. 원하는 파일로 이동하기
  • 현재 경로 어딘지 확인
    터미널의 경우, pwd
    파워쉘의 경우, Get-Location 이라고 입력해봅시다.

    pwd
  • 해당 폴더에 있는 파일 확인
    터미널의 경우, ls (list segments의 약자)
    파워쉘의 경우, dir 이라고 입력해봅시다.

    ls

  • 폴더 이동
    원하는 경로로 이동

    cd [경로] / [경로]

    상위 폴더로 이동

    cd ..
  • 폴더 생성

    mkdir [폴더명]
  • 복사

    cp [옵션][복사 할 디렉토리/파일명][복사 될 디렉토리/파일명]
  • 이동

    mv [옵션] [원본파일] [이동위치]
  • 삭제

    rm [옵션] 파일명

02. GIT 의 개념

1) Git 이해하기

Git: 각각의 수정 사항을 원할 때마다 수시로 기록하면서, 필요하다면 이전 상황으로 돌아갈 수 있게 해주는 것

  • 깃 버전 확인
    git --version

2) git 개괄, git init을 통해 git 시작하기

  • 버전 관리 할 파일 지정
    git add
  • 현재 관리 중인 파일을 하나의 버전으로 저장
    git commit

깃 파일 상태

출처) 깃허브 정리 노션

untracked file: 아직 git add 를 통해서 관리되기 전의 파일들
tracked file: 관리되는 파일들
staged 상태: add 를 한다고 바로 하나의 버전으로서 저장되는 것이 아니라, add 이후에 commit 을 꼭 해야만 하나의 버전으로서 저장된다. 그래서 수정사항이 관리는 되고 있지만, commit 이 되기 전까지의 상태

깃 시작하기

깃 상태 초기화, git 저장소를 만드는 명령어

git init

여기서 이 git 저장소라는 건 다양한 버전의 파일들이 저장되기 위한 (우리 눈에 보이지 않는) 하나의 폴더이다. 맥은 cmd + shift + .을 단축키 입력하여 숨긴 파일/폴더를 해보면 .git 폴더가 생성되어 있다.

3) git add 를 통해 git 으로 관리할 파일 지정하기 (+ git status)

hello.txt 파일을 수정한다고 가정하고 진행한다.

  • 특정 파일 깃에 추가하기

    git add hello.txt

    명령어를 통해서 깃이 hello.txt 파일의 수정 사항을 인지한다.

  • 모든 파일 깃에 추가

    git add .

    만약 여러 파일의 수정 사항이 있다면 이 명령어를 입력한다.

  • git으로 관리되는 모든 파일 깃에 추가

    git add -A

    . 은 현재 명령어가 실행되는 폴더 내부의 파일을 뜻하는 반면에,
    -A 를 하게 되면 현재 경로가 어디든 현재 git 으로 관리되는 모든 파일에 대한 수정사항을 반영한다.

  • 파일 상태 확인하기

    git status

4) git commit 을 통해 버전 기록하기 (+ amend)

현재 파일들을 하나의 버전으로서 기록(저장)하기 위한 명령어

git commit -m" [커밋 메세지]"

커밋 메세지는 자유롭게 작성해도 되지만 어떤 코드를 어떻게 수정했는지 알아보기 쉽게 작성하는 것이 좋다.
또한, 협업 프로젝트를 진행할 때는 팀원과 통일시켜주는 것이 좋다.

커밋타입: 동작 기능이름/함수이름
EX) git commit -m" Feat: Create hello.txt"

기본적인 커밋 메세지는 위와 같은 형태로 이루어진디.

  • commit 메세지를 수정

    git commit --amend

    위 명령어를 입력하면, 최근 commit의 메세지를 수정할 수 있다.

  • 마지막으로 커밋한 메세지를 수정

    git commit --amend -m "[바꾸고 싶은 커밋 메세지]"

    만약 마지막으로 커밋한 메세지를 수정하고 싶다면 위와 같이 입력하면 된다.

03. GIT 으로 버전 되돌리기

1) git log 를 통해 버전 확인하기

커밋 내역 확인

git log

지금까지 어떤 버전이 존재하는지 확인한다.

2) git revert 를 통해 버전 되돌리기

git revert: 현재까지의 commit 기록을 유지하면서, 특정한 commit 이전으로 되돌리는 명령어

‼️주의해야할 점‼️: 되돌아가고 싶은 commit 이름을 적는게 아니라, 되돌리고 싶은 commit 이름을 적어야한다.

git revert [돌아갈 버전의 커밋번호]

커밋명에는 위 사진에 있는 노란색 글씨에 commit ~~ 뒤에 있는 6자리 글자를 작성하면 된다.
위 명령어를 입력하면 아래처럼 표시된다. revert를 쓰면 버전을 되돌아가는 것도 하나의 commit 으로서 기록되기 때문에, 커밋 메세지를 써달라고 표시가 된 것이다.

만약 따로 수정하지 않고 기본으로 쓰고 싶다면, ESC 버튼 누른 후에 → :wq 라고 입력 -> 엔터하면 된다.

그리고 파일은 원하는 파일로 되돌아간다.

3) git reset 을 통해 버전 되돌리기

git reset: 특정 커밋으로 돌아가면서, 그 커밋 이후의 커밋 기록을 삭제하는 명령어

git reset은 다양한 옵션이 있다.
‼️주의해야할 점‼️: 되돌리고 싶은 commit 이 아니라, 되돌아가고 싶은 commit 을 명시

reset --soft

git reset --soft [커밋번호]

reset —soft 의 경우, 수정 사항 (이후의 커밋 내용) 에 대해서 그대로 두고, 기록만 삭제하는 것
(변경사항은 유지, staged 상태로 만듦)

reset --hard

git reset --hard [커밋번호]

reset --hard는 명시한 그 커밋 이후의 모든 수정사항들을 완전히 삭제하는 기능으로
—soft 로 했을 때와는 다르게, 바로 해당 커밋의 내용으로 파일이 되돌아간다.
(변경사항 없어짐)

reset --mixed (default)

git reset --mixed [커밋번호]

—soft 와 비슷한데, 이후 수정사항들을 commit 이전으로 되돌리는 것이 아니라, add 이전으로 되돌린다.
(변경사항은 유지, unstaged 상태로 만듦)

갯수로 커밋 취소

  • 가장 최근의 커밋 취소
    git reset [옵션] HEAD^
  • 현재부터 뒤에 명시간 숫자만큼의 커밋 취소
    git reset [옵션] HEAD~[취소할 커밋 갯수]

04. Github 의 개념

1) github 의 개념 (remote repository)

Git: 단순히 버전을 기록하고, 관리하는 도구
Github: 로컬 깃 기록들을 온라인 상에 업로드하고, 보관할 수 있게 해주는 서비스

  • Git 으로 기록된 버전들을 올려놓기 위한 구글드라이브 같은 서비스
  • Github 없이도 Git 을 얼마든지 사용할 수 있지만, 현업에서는 Gitlab/Github 등과 함께 Git 을 사용하는 것이 일반적

Local Repository: 우리 컴퓨터에 있는 Git 저장소
Remote Repository: Github 상의 (온라인 상의) Git 저장소

  • 두 저장소를 연결하는 명령어

    git remote add origin [github repo 주소]

    Local Repository 가 있는 곳에서 (git init 을 한 그 폴더에서) 아래 명령어를 입력하면 연결된다.

  • 로컬에 저장되어 있는 기록 온라인에 올리기

    git push origin [브랜치명]

    브랜치는 다음 게시물에서 정리 예정
    기본적으로 master가 디폴트 브랜치로 따로 브랜치를 생성하지 않았다면
    git push origin master를 입력해주면 된다.

🎈최근에는 default branch 에 대해서 master 가 아니라 main 이라는 이름을 쓰도록 권고하고 있다.

05. Github 로 협업하기 - 기초

1) github collaborator 로 등록하기 (git clone 으로 진행하는 경우)

협업을 위해서는, 우선 이 깃허브 레포를 함께 이용할 사람 (개발을 같이 하면서, push, pull 등을 함께 할 사람) 을 등록해줘야 한다.

그 협업자를 여기서는 collaborator 라고 한다.

  1. 깃허브 레포지토리에서 상단에 settings 클릭
  2. 왼쪽 메뉴 중에서 Collaboratoes 클릭
  3. add people를 클릭하며 깃허브 아이디를 입력해서 추가
  4. 초대받은 사람은 꼭 이메일로 온 초대를 수락한다.

2) git clone 으로 프로젝트 시작해보기 (git pull, git fetch)

git clone: 깃허브에 있는 repo를 그대로 내 컴퓨터로 가져오고 싶을 때 쓰는 명령어

public 으로 설정된 repo 라면 누구나 git clone 을 통해서 컴퓨터로 내려받을 수 있고,
private 으로 설정된 repo 라면 collaborator 로 등록이 되어있어야만 git clone 을 할 수 있다.

❗️중요한 점: git clone 은 단순한 다운로드와는 다르게, commit 기록이 전부 가져오게 되기 때문에,
git reset 등의 명령어를 통해서 이전 기록으로 돌아갈 수도 있고, git pull, git push 등을 통해서
실제 repo 에 수정 사항을 반영하거나 수정 사항을 내려받을 수도 있다.

  • 깃허브 레포지토리 클론 명령어

    git clone [repo 주소]

    이미 깃으로 관리되고 있는 폴더가 아닌, 새로운 폴더를 생성한 뒤 터미널에 위 명령어를 입력한다.

  • 깃허브 수정 사항 내려받기

    git pull origin [브랜치명]

    로컬에는 없는 남의 수정 사항이나 온라인상의 파일 수정을 로컬에 적용시키기 위해서 사용한다.

  • 수정 사항 확인하기

    git fetch

    깃허브 상의 수정사항을 바로 우리 컴퓨터에 반영하는 것이 아니라, 우선 컴퓨터의 원격 branch 로 수정사항을 가져오고, 원한다면 해당 branch 를 merge 해서 수정 내역을 받아오는 명령어
    위 명령어를 실행하면, 깃허브 상의 수정사항을 바로 우리 컴퓨터에 반영하지 않고 브랜치 형태로 받아온다.

  • 원격 저장소에 존재하는 브랜치 확인

    git branch -r
  • 수정 사항 병합하기(머지하기)

    git diff master origin/[브랜치명]

    diff 명령어는 어떤 차이점이 있는지를 확인하는 명령어

    git merge origin/[브랜치명]

    merge [브랜치명] 은 해당 브랜치를 현재 브랜치로 병합하겠다는 명령어

3) fork 로 원격 저장소 복제해보기

fork: github 가 가진 기능으로, 다른 사람이 가진 저장소를 복제해서 내 github 저장소를 새롭게 만드는 기능
파일 뿐만 아니라, clone 과 마찬가지로 commit 기록까지도 모두 복제된다.

🎈clone 은 다른 사람이 만든 저장소 그 자체를 내 컴퓨터에 받아오는 기능이라면,
fork 는 다른 사람이 만든 저장소를 복제해서 ‘새롭게 내 github repo 를 만들고’
‘결국 내 컴퓨터로 받아오는건 내 repo’라는 점에서 차이가 있다.

복제하고 싶은 깃허브 reop에서, 오른쪽 fork 버튼을 누르면 된다.

create fork 버튼을 누르면 완료된다.
이제부터는 해당 repo는 나의 소유이므로, 자유롭게 clone한 후에 push, pull 등을 진행하면 된다.

  • 어떤 원격 저장소와 연결되어 있는지 확인
    git remote -v
  • fork했던 원본 repo를 연결해주기
    git remote add upstream [원본 repo 주소]
  • 원본 저장소 수정사항 반영하기
    git pull upstream [브랜치명]
    만약 원본 저장소가 업데이트 되었는데, 내 컴퓨터에 이를 반영하고 싶다면 위 명령어를 입력한다.
  • 내 저장소에 내 수정사항 반영하기
    git push origin [브랜치명]
  • 원본 저장소에 내 수정사항 반영하기
    우선은 내 저장소에 push 한 후에 github 상에서 pull request 라는 것을 해야 한다.
profile
프론트엔트 개발자입니다 🧑‍💻

2개의 댓글

comment-user-thumbnail
2023년 7월 17일

저도 개발자인데 같이 교류 많이 해봐요 ㅎㅎ! 서로 화이팅합시다!

1개의 답글