Git & Github - Start

박정호·2022년 11월 2일
0

git + GitHub

목록 보기
1/3
post-thumbnail

🚀 Start

깃과 깃허브에 대해서 안지는 1년이 다 되어가고 나는 아직도 정확한 원리와 사용방법을 알지 못한다. 그저 add, push, commit을 외워서 사용한 정도이고 어떤 convention에 맞추고 어떤 상황에 어떤 명령어를 사용해야 하는지도 많이 부족하고 미숙하다.

앞으로도 여러 프로젝트를 진행하며 나의 기록들을 repository에 남기려면 지금부터 공부해서 차근차근 친해져야겠다. 진작 했어야 하는 일이지만 집중해서 핵심적이고 실무에서 필요한 여러 부분들을 습득해보자.


🌈 Git vs Github

우선 다른 서비스이다. Git은 분산 버전 관리 시스템이며, GitHub는 웹 서비스이다. 또한 둘은 만든 사람도 다르다.

Github는 분산 버전 관리 툴인 Git을 관리해주는 웹 호스팅 서비스이며 Github뿐만 아니라 GitLab등 다양한 소프트웨어가 존재한다. 하지만, Github가 가장 유명하고 범용적으로 사용되는 서비스인 것은 사실이다.


⭐️ Git?

Git은 로컬 저장소(내 컴퓨터)와 원경 저장소(서버 컴퓨터)로 나뉜다. 내 컴퓨터에서 작성한 프로젝트를 원격 저장소에 저장해두고, 만약 내 컴퓨터의 프로젝트가 손상되거나 다른 컴퓨터에서 코드를 가져오고 싶을 때 원격 저장소에서 바로 가져올 수 있다.

이때, 코드 뿐만 아니라 코드의 변경 내역까지 모두 가져올 수 있기 때문에 Git버전 관리 도구라고 불리는 것이다.

이렇듯 Git에서 원경 저장소는 코드의 원본이나 변경 내역을 저장하는 매우 중요한 역할을 한다. 이러한 기능을 하는 툴을 형상 관리 툴이라고 한다. 그 중에는 Git, SVN, CVS가 있다.

  • Git은 소스코드 및 파일의 변경내역을 저장하는 분산 버전 관리 시스템이다.
  • 리누스 토발즈에 의해 처음 만들어졌습니다. 리눅스 커널을 만드신 분.
  • GitHub, Bitbucket, Gitlab 등의 Git 기반 버전 관리 호스팅 서비스들이 있다.

✅ 버전확인 및 초기 설정

👉 Git 버전 확인

$ git --version
git version 2.37.3

👉 사용자 정보를 설정

$ git config --global user.name "jeongho.park"
$ git config --global user.email email@example.com
$ git config --list // 설정이 잘되었는 확인

👉 비쥬얼스튜디오코드 설정

  • git bash로 변경


✅ 저장소 만들기

👉 작업할 디렉토리를 만들고(mkdir) 생성한 디렉토리로 이동하기(cd)

$ mkdir git-test
$ cd git-test

👉 현재 디렉토리를 Git 저장소로 만들어 원하는 디렉토리를 기준으로 버전관리를 한다.

$ git init

👉 git init 을 입력하면 해당 폴더 기준으로 .git(로컬 저장소)가 생성된다.로컬 저장소에는 버전 정보, 원격 저장소 주소가 저장된다.

  • 이때, 한 폴더에는 하나의 .git(로컬 저장소)을 가져야 한다. 그렇지 않을 경우 충돌이 발생할 수 있다.


✅ add, commit

👉 git이 관리할 대상의 파일 등록하기(add)

  • 변경한 파일 목록 중 스테이지에 올리기 원하는 파일만 선택한다.
  • 파일 전체를 올리고 싶은 경우에는 git add 뒤에 .을 입력한다(git add .)
$ git add README.md // 지정 파일 올리기
$ git add . // 파일 전체 올리기

👉 버전 만들기(commit)

$ git commit -m "저장 메세지를 입력해주세요"

👉 전체 과정

 touch README.md
$ git status # Untracked 확인
$ git add README.md
$ git commit -m "first commit"



✅ 상태 확인(status , diff , log)

👉 파일 상태 확인하기 (status)

$ git status

💡 파일의 상태에 따라 Untracked 와 Tracked 로 분류.

1) Untracked(관리 대상이 아님) : 파일 생성 후 한번도 git add하지 않은 상태

2) Tracked(관리 대상임) : git이 관리하는 파일임을 의미

  • Unmodified : 최근의 커밋과 비교했을 때 바뀐 내용이 없는 상태
  • Modified : 최근 커밋과 비교했을 때 바뀐 내용이 있는 상태
  • Staged : 파일이 수정되고 나서 스테이지 공간에 올라와 있는 상태이며, git add 후의 상태

👉 변경사항 확인하기 (diff)

  • add하기 전 최근 commit한 내용과 현재 폴더의 변경 사항을 확인할 수 있습니다.
$ git diff

👉 커밋(commit) 히스토리 조회하기 (log)

  • git log 명령어를 입력하면, 최근 커밋한 히스토리를 확인.
    (로그가 길 경우 q를 누르시면 밖으로 빠져나옵니다. j위, k는 아래로 이동)
$ git log


무시할 파일 추가 하기

  • push.gitignore 파일에 버전 관리에서 제외할 파일을 추가.

💡 .gitignore 자동 생성기 활용하기

.gitignore 파일을 직접 생성해야 하는 경우가 종종 있다.

이 때, 라이브러리와 프레임워크를 사용하는 경우에는 어떤 파일을 깃 버전 관리에서 제외 시켜야 하는지(.gitignore파일에 넣어야 되는지) 헷갈리는 경우나 일일이 작성하기 번거로운 경우가 있다.

이럴 때 편하게 사용할 수 있는 툴인 gitingnore.io 를 활용해보자.


✅ 전체 Flow


⭐️ Github?

Git을 클라우드 환경에서 사용할 수 있게 제공하는 공간이 Github이다. Github는 단순히 저장소 역할만을 하지 않고 개발자들 사이의 거대한 커뮤니티 형성을 한다.

자신의 프로젝트는 물론 다른 개발자들의 프로젝트의 코드를 볼 수 있고, 이슈를 제기하고 원한다면 다른 이의 프로젝트를 수정하고 발전시키는데에도 참여가 가능하다. 이를 오픈소스에 기여(contribution)한다고 한다.

또한 프로젝트 관리, Code Editer 제공, 블로그에서도 Github을 사용할 수 있는 하나의 생태계를 이루고 있다.

✅ Github 가입하기

나의 경우 이미 가입이 되어있고 또한 가입하는 것은 쉽다.
Git / GitHub 안내서


✅ Repository 생성하기

  • Public(공개)/Private(비공개)를 설정
  • Add a README file을 클릭하여 README file을 추가
  • 설정이 완료되면 Create Repository를 클릭.

👉 초기 레파지토리 생성시 README.md 파일을 생성하지 않았을 경우

  • 다음과 같은 화면이 나오지 않는다.

  • 1️⃣ 방법1. 아래와 같은 git 명령어가 나온다. 똑같이 git bash에 입력하면 ₩README.md₩파일이 GitHub 레파지토리로 들어가는 것을 확인할 수 있다.

  • 1️⃣ 방법2. 이미 레파지토리가 있는 경우는 다음과 같이 해결.


✅ git clone

👉 원격 저장소의 코드를 컴퓨터에 받아올 수 있다.

  • 새 작업 디렉토리 만들고mkdir 명령어 생성한 디렉토리로 이동cd 명령어
$ mkdir filename
$ cd filename
$ git clone https://github.com/id/clone-filename.git .

💡 클론 시 점.을 찍는 이유는 현재 폴더에 클론 받기 위해서다. 만약, 점.을 찍지 않을 경우 새 폴더를 생성한다.


✅ git pull

👉 원격 저장소에 업데이트 된 데이터를 가져오고 병합할 때 사용

$ git pull origin main

💡 push를 하려고 했더니 누군가 이미 push를 해서 pull을 받아야 하는 경우
상황

A사람 clone --- push1
B사람 clone -------------- pull-push2
C사람 clone ------------------------------- push3(pull 받지 않아 error)

1️⃣ 로컬 main과 원격 main을 다른 브랜치로 보고 병합

git pull --no-rebase

2️⃣ 시간상 순서대로 병합

git pull --rebase

참고: GIT PUSH 충돌 처리


✅ add, commit, push

👉 권한이 주어진 경우에는 소스코드 수정 후 커밋과 푸시하기

$ git status
$ git add .
$ git commit -m "추가 작업 내역입니다."
$ git push origin main

💡 원격 저장소와 로컬 저장소의 싱크가 맞지 않아(예를 들어 컴밋 개수가 다르다던지) 로컬 저장소로 강제로 맞추고 싶을 때 사용하는 명령어.

이 명령어는 혼자 레파지토리를 사용할 때 사용하시고 절대 협업시 사용해서는 안되는 명령어입니다.

git push --force

💡 git log --all --decorate --oneline --graph 명령어를 사용하면 모든 컴밋을 그래프로 볼 수 있다.


git push password 에러

SSH Key 생성하기





출처 및 참고하기 좋은 사이트

profile
기록하여 기억하고, 계획하여 실천하자. will be a FE developer (HOME버튼을 클릭하여 Notion으로 놀러오세요!)

0개의 댓글