깃과 깃허브에 대해서 안지는 1년이 다 되어가고 나는 아직도 정확한 원리와 사용방법을 알지 못한다. 그저 add
, push
, commit
을 외워서 사용한 정도이고 어떤 convention
에 맞추고 어떤 상황에 어떤 명령어를 사용해야 하는지도 많이 부족하고 미숙하다.
앞으로도 여러 프로젝트를 진행하며 나의 기록들을 repository
에 남기려면 지금부터 공부해서 차근차근 친해져야겠다. 진작 했어야 하는 일이지만 집중해서 핵심적이고 실무에서 필요한 여러 부분들을 습득해보자.
우선 다른 서비스이다. Git
은 분산 버전 관리 시스템이며, GitHub
는 웹 서비스이다. 또한 둘은 만든 사람도 다르다.
Github
는 분산 버전 관리 툴인 Git
을 관리해주는 웹 호스팅 서비스이며 Github
뿐만 아니라 GitLab
등 다양한 소프트웨어가 존재한다. 하지만, Github
가 가장 유명하고 범용적으로 사용되는 서비스인 것은 사실이다.
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 // 설정이 잘되었는 확인
👉 비쥬얼스튜디오코드 설정
👉 작업할 디렉토리를 만들고(mkdir)
생성한 디렉토리로 이동하기(cd)
$ mkdir git-test
$ cd git-test
👉 현재 디렉토리를 Git
저장소로 만들어 원하는 디렉토리를 기준으로 버전관리를 한다.
$ git init
👉 git init
을 입력하면 해당 폴더 기준으로 .git(로컬 저장소)
가 생성된다.로컬 저장소에는 버전 정보, 원격 저장소 주소가 저장된다.
.git(로컬 저장소)
을 가져야 한다. 그렇지 않을 경우 충돌이 발생할 수 있다.👉 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)
$ git status
💡 파일의 상태에 따라 Untracked 와 Tracked 로 분류.
1) Untracked(관리 대상이 아님) : 파일 생성 후 한번도
git add
하지 않은 상태2) Tracked(관리 대상임) : git이 관리하는 파일임을 의미
Unmodified
: 최근의 커밋과 비교했을 때 바뀐 내용이 없는 상태Modified
: 최근 커밋과 비교했을 때 바뀐 내용이 있는 상태Staged
: 파일이 수정되고 나서 스테이지 공간에 올라와 있는 상태이며,git add
후의 상태
👉 변경사항 확인하기 (diff)
$ git diff
👉 커밋(commit)
히스토리 조회하기 (log)
git log
명령어를 입력하면, 최근 커밋한 히스토리를 확인.q
를 누르시면 밖으로 빠져나옵니다. j
위, k
는 아래로 이동)$ git log
push
전 .gitignore
파일에 버전 관리에서 제외할 파일을 추가.💡 .gitignore 자동 생성기 활용하기
.gitignore
파일을 직접 생성해야 하는 경우가 종종 있다.이 때, 라이브러리와 프레임워크를 사용하는 경우에는 어떤 파일을 깃 버전 관리에서 제외 시켜야 하는지(.gitignore파일에 넣어야 되는지) 헷갈리는 경우나 일일이 작성하기 번거로운 경우가 있다.
이럴 때 편하게 사용할 수 있는 툴인 gitingnore.io 를 활용해보자.
Git
을 클라우드 환경에서 사용할 수 있게 제공하는 공간이 Github
이다. Github
는 단순히 저장소 역할만을 하지 않고 개발자들 사이의 거대한 커뮤니티 형성을 한다.
자신의 프로젝트는 물론 다른 개발자들의 프로젝트의 코드를 볼 수 있고, 이슈를 제기하고 원한다면 다른 이의 프로젝트를 수정하고 발전시키는데에도 참여가 가능하다. 이를 오픈소스에 기여(contribution)
한다고 한다.
또한 프로젝트 관리, Code Editer 제공
, 블로그
에서도 Github
을 사용할 수 있는 하나의 생태계를 이루고 있다.
나의 경우 이미 가입이 되어있고 또한 가입하는 것은 쉽다.
Git / GitHub 안내서
Public(공개)
/Private(비공개)
를 설정README file
을 추가Create Repository
를 클릭.👉 초기 레파지토리 생성시 README.md
파일을 생성하지 않았을 경우
다음과 같은 화면이 나오지 않는다.
1️⃣ 방법1. 아래와 같은 git 명령어가 나온다. 똑같이 git bash
에 입력하면 ₩README.md₩파일이 GitHub 레파지토리
로 들어가는 것을 확인할 수 있다.
👉 원격 저장소의 코드를 컴퓨터에 받아올 수 있다.
mkdir 명령어
생성한 디렉토리로 이동cd 명령어
$ mkdir filename
$ cd filename
$ git clone https://github.com/id/clone-filename.git .
💡 클론 시 점
.
을 찍는 이유는 현재 폴더에 클론 받기 위해서다. 만약, 점.
을 찍지 않을 경우 새 폴더를 생성한다.
👉 원격 저장소에 업데이트 된 데이터를 가져오고 병합할 때 사용
$ 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 충돌 처리
👉 권한이 주어진 경우에는 소스코드 수정 후 커밋과 푸시하기
$ git status
$ git add .
$ git commit -m "추가 작업 내역입니다."
$ git push origin main
💡 원격 저장소와 로컬 저장소의 싱크가 맞지 않아(예를 들어 컴밋 개수가 다르다던지) 로컬 저장소로 강제로 맞추고 싶을 때 사용하는 명령어.
이 명령어는 혼자 레파지토리를 사용할 때 사용하시고 절대 협업시 사용해서는 안되는 명령어입니다.
git push --force
💡
git log --all --decorate --oneline --graph
명령어를 사용하면 모든 컴밋을 그래프로 볼 수 있다.
출처 및 참고하기 좋은 사이트