🟨 목 차 🟨
1. Git 이란?
1-1. 형상 관리 도구(버전 관리 시스템)
1-2. SVN과 Git의 차이점
1-3. Git의 장점
2-1. Git의 3가지 영역 (Staging Area)
2-2. File 관점에서의 상태
3. Git Hub 란?
3-1. Git Hub 란 ?
3-2. Git 과 Git Hub의 차이
3-3. Git Hub의 장점
3-4. Git Hub를 사용해야 하는 이유
4. Git Hub(깃 저장소)에 업로드하기
4-1. 간단한 순서도로 Git Hub 대략 살펴보기
4-2. Git 초기화 설정으로 Git 버전 관리하기
4-3. Git Hub에서 저장소 만들어서 프로젝트 Git이랑 연결하기
4-4. 작업한 프로젝트들을 버전으로 gitHub에 올리기
4-5. 브랜치 만들기
4-6. Git Hub(깃 저장소에 업로드)
4-6-1. Authentication failed for ~use a personal access token instead 에러
Git Hub(깃 저장소)에 올리기 전에 Git과 Git Hub가 무엇인지 알아보고 올려보도록 합시다 :)
◼️ 1. Git 이란? ◼️
◼️ 1-1. 형상 관리 도구(버전 관리 시스템)
- Git은 소프트웨어를 개발하는 기업의 핵심 자산인 소스코드를 효과적으로 관리 할 수 있게 해주는 무료 공개 소프트웨어라고 생각하면 편하다.
- 형상 관리 도구는 버전 관리 시스템이라고도 불린다.
- SVN 보다 여러 장점이 있어 SVN을 쓰던 개발 조직들은 하나 둘씩 Git으로 갈아타는 추세이다.
◼️ 1-2. SVN과 Git의 차이점
SVN과 Git의 가장 큰 차이점은 분산형 관리 시스템 이라는 것이다.
- SVN : 중앙 서버에 소스코드와 히스토리를 저장
- Git : 소스코드를 여러 개발 PC와 저장소에 분산해서 저장
==>> 중앙 서버에 장애가 발생해도 로컬 저장소에 커밋을 할 수 있으며, 로컬 저장소들을 이용하여 중앙 저장소의 복원도 가능하다.
속도 : Git >> SVN
== >> 사본을 로컬에서 관리하기 때문에 Git이 SVN에 비해 훨씬 빠르다(SVN은 변경 로그 하나 보는 것도 인터넷을 경유해야함)
◼️ 1-3. Git의 장점
- 소스코드를 주고 받을 필요 없이, 같은 파일을 여러 명이 동시에 작업하는 병렬 개발이 가능하다.
- 브랜치를 통해 개발한 뒤, 프로그램에 합치는 방식(Merge)으로 개발을 진행 할 수 있다.
- 분산 버전 관리이기 때문에 인터넷이 연결되지 않은 곳에서도 개발을 진행할 수 있다.
- 중앙 저장소가 날라가도 다시 원상복구가 가능하다.
- 팀 프로젝트 뿐만 아니라 개인 프로젝트도 Git을 통해 버전 관리를 하며 체계적인 개발이 가능하고, 프로그램이나 버전 패치를 배포하는 과정도 간단해진다.( pull을 통한 업데이트, patch 파일 배포 )
◼️ 2-1. Git의 3가지 영역 (Staging Area) ◼️
Commit을 할 때, 총 3가지 영역을 바탕으로 작동을 한다.
- Working Directory : 내가 작업하고 있는 프로젝트의 디렉토리
- Staging Area : 커밋을 하기 위해 $ git add 명령어로 추가한 파일들이 모여있는 공간
- Repository : 커밋들이 모여있는 저장소
코드를 작성하고 코드를 Git을 지원하는 웹 호스팅 서비스 시스템의 한 종류인 Git Hub에 올린다고 가정을 해보자.
Git Hub에 올리기 위해선 우선 커밋을 해야하는데, 이 순간에 먼저 터미널에 git add. 또는 git add [File] 명령어를 통해 커밋할 파일들을 추가한다.
이러한 파일들은 바로 Repository(Git Hub)에 올라가지 않고, Staging Area에 올라가게 된다.
그 다음에 Staging Area에 추가한 파일들을 Commit을 한다면 최종적으로 저장소(Repository)에 올라가게 된다.
◼️ 2-2. File 관점에서의 상태 ◼️
- Untracked : Working Directory에 있는 파일이지만 Git으로 버전관리를 하지 않는 상태
- Unmodified : 신규로 파일이 추가되었을 때, new file 상태와 같다. ( $ git add 상태 )
- Modified : 파일이 추가된 이후 해당 파일이 수정되었을 때의 상태
- Staged : Staging Area에 반영된 상태
◼️ 3. Git Hub 란? ◼️
◼️ 3-1. Git Hub 란 ?
Git Hub는 는 분산 버전 관리 툴인 깃(Git)을 사용하는 프로젝트를 지원하는 웹호스팅 서비스이다. 또한 Git Hub는 영리적인 서비스와 오픈소스를 위한 서비스를 모두 제공한다.
◼️ 3-2. Git 과 Git Hub의 차이
주요 차이점은 Git은 오픈 소스 버전 관리 시스템이고, Git Hub는 Git 저장소를 위한 호스팅 서비스 이다.
◼️ 3-3. Git Hub의 장점
- 깃의 장점을 그대로 가지고 있다
[ 모든 변경사항에 대한 '스냅샷'을 저장하기 때문에 어떤 데이터도 잃어버리지 않는다. 개발자의 소셜네트워크로 묶인 공간이기 때문에 조금 더 좋은 소스로 업데이트를 하기 편한 환경이다. 또한 효과적인 협업도 가능하다. ] - 효율적인 배포관리
[ Git Hub를 사용하면 버전관리, 개발용, 운영용, private(개인용)으로 각각 별도로 구성을 할 수 있기 때문에 매우 효율적이다. ]
◼️ 3-4. Git Hub를 사용해야 하는 이유
Git Hub의 장점과도 같은 말인데, Git Hub를 사용해야 하는 이유는
- 소프트웨어에는 버전관리가 필요한데 이때 필요한 것이 버전관리를 위한 툴 Git 이다.
- 어느 정도 규모가 있는 프로젝트를 진행할 때는 혼자가 아닌 여러명의 개발자가 협업하게 되는데 이때 필요한 것이 협업을 위한 저장소, Git Hub 이다.
◼️ 4. Git Hub(깃 저장소)에 업로드하기 ◼️
◼️ 4-1. Git Hub 간단한 순서를 통해 대략 살펴보기
1) 로컬에 저장소를 생성한다 (init)
2) 깃허브 서버와 연결한다 (remote add)
3) 서버에서 전체 내용을 가져온다 (clone)
4) 작업이 진행된 이후에는 일부 변경된 내용만 가져온다 (fetch)
5) 필요에 따라 다른 서버의 내용을 가져올 수도 있다 (fork)
6) 추가작업은 브랜치(branch)를 따서 진행(checkout)하며 파일의 변화는 스냅샷(snapshot)으로 저장한다.
7) 새롭게 추가한 작업이 완성되면 마스터 브랜치와 병합 (merge) 한다
8) 개발이 완료되면 완료된 파일들을 스테이징 영역에 추가 (add) 한다
9) 내용이 안전하게 추가되었다면 로컬에 반영 (Commit) 한다.
◼️ 4-2. Git 초기화 설정으로 Git 버전 관리하기
1. 내가 관리하려는 폴더를 git 초기화 설정으로 git 버전관리 상태로 만드는 과정
==> 내가 깃에 올리려는 폴더를 git으로 관리한다는 의미
우선, 터미널에 들어가서 cd 폴더위치 명령어를 통해 깃허브에 올리고 싶은 폴더명 위치에 들어간다.
그 후 git init 명령어를 쳐서 git 버전관리 상태로 만든다.
2. 현재 프로젝트가 어떻게 관리되고 있는지 확인하는 방법
터미널의 프로젝트 폴더 위치에서 git status 명령어를 입력해준다.
[ 추적하지 않은 파일(Untracked Files) 라는 말이 뜨면 파일은 만들어 놨는데 git이 추적 할 수 없다는 의미(Staging Area에 올리지 않았다고 생각하면 편함)이다. ]
3. Staging Area에 스테이징[ 폴더& 파일 들을 git이 추적할 수 있게 올리는 것 ] 한다.
터미널의 프로젝트 폴더 위치에서 git add . 명령어를 입력해준다.
[ 부분 스테이징을 하려면 git add [File] 명령어 / 전체 스테이징을 하려면 git add . 명령어 ]
4. 스테이징 후, 현재 파일 상태 확인하기
터미널의 프로젝트 폴더 위치에서 git status 명령어 입력해준다.
[ 커밋할 변경 사항(Changes to be committed)라고 뜨는데 파일들이 모두 Staging Area에 올라가서 커밋 할 준비가 되었다는 의미다. ]
◼️ 4-3. Git Hub에서 저장소 만들어서 프로젝트 Git이랑 연결하기
1. Git Hub에서 new repository를 생성해 새로운 깃 저장소를 만든다.
[ README file은 이 프로젝트가 무엇인 지 설명해주는 파일이고 선택사항이다. ]
2. 로컬폴더와 Git Hub 저장소를 연결 시키기 전 ID, Mail 등록하기
- 시스템 전역에 ID, Email 값 등록하기 -
터미널의 프로젝트 폴더 위치에서 git config --global user.name 깃허브 ID값 명령어를 입력해준다.
터미널의 프로젝트 폴더 위치에서 git config --global user.email 깃허브 email값 명령어를 입력해준다.
==> 최초 한 번만 실행하는 것이 좋다.
[ global이란 시스템 전역에 ID, Email 값 등록을 한다는 의미이다. ]
3. Git Hub 저장소를 로컬폴더와 연결하기
터미널의 프로젝트 폴더 위치에서 git remote add origin Git Hub 저장소 명령어를 입력해준다.
[ Git Hub 저장소는 아래의 사진의 빨간 동그라미 표시 버튼을 누르면 경로가 복사가 된다. 그것을 입력해주자. ]
◼️ 4-4. 작업한 프로젝트들을 버전으로 gitHub에 올리기
1. commit 하기
터미널의 프로젝트 폴더 위치에서 git commit -m "메세지 내용" 명령어를 입력해준다.
[ -m 의 의미는 메세지를 남기겠다는 의미이고 메세지 내용을 남길때는 개발자들의 무언의 약속 형식으로 올린다. 형식을 참고할테니 이런 형식으로 올리도록 해라. [ 커밋 메세지 참고 : https://da-nyee.github.io/posts/git-git-commit-message-convention/ ]
2. commit 잘 되었나 확인하기
터미널의 프로젝트 폴더 위치에서 git log 명령어를 입력해준다.
3. git 작업내역 여행하는 방법
✔️ 예전에 작업했던 commit으로 되돌아가고 싶을 때
터미널의 프로젝트 폴더 위치에서 git checkout 커밋ID 명령어를 입력해준다.
[ 커밋 ID는 git log 명령어를 입력했을때 이상한 영문과 숫자들의 값이다. ]
[ EX : git commit d168571a7955abd7a8622ae066e5412f1f9d5520 ]
✔️ 과거로 왔는데 다시 최신버전으로 가고 싶은데, 최신버전 커밋 ID 값이 없다면 어떻게 갈까?
터미널의 프로젝트 폴더 위치에서 git checkout master 명령어를 입력해준다.
==> Comiit 상태에서 과거로 돌아가면 과거 커밋에서는 수정을 하지 못한다. 만약 수정하고 싶다면 새 브랜치를 만들어서 작업이 가능하다. 브런치를 만들어보자.
◼️ 4-5. 브랜치 만들기
1. 수정하고싶은 과거 커밋으로 돌아간다.
터미널의 프로젝트 폴더 위치에서 git checkout 커밋ID 명령어를 입력해준다.
2. 과거에서 복사본을 만든다.
터미널의 프로젝트 폴더 위치에서 git branch 뉴 브랜치 명 명령어를 입력해준다.
3. 브랜치가 잘 작동했는지 확인한다.
터미널의 프로젝트 폴더 위치에서 git branch -v 명령어를 입력해준다.
위의 사진을 보게 되면 master, newbranch 2개의 브랜치가 있다는 것을 알 수 있다.
[ 초록색 으로 표시되어 있는 부분은 현재 위치하고 있는 파일을 가르키는것 이다. ]
현재 위치가 master 또는 newbranch 가 아닌 이유는 main 브랜치가 master이고, 현재는 실제로 master 있지만 해당 브랜치에서 newbranch 시점으로 이동한것. 즉, 현재 master 브랜친데 newbranch 시점이다.
==>> 그래서 해당 브랜치로 직접 이동해야지 포인터가 newbranch로 이동된다.
4. newbranch로 완전 이동하기
터미널의 프로젝트 폴더 위치에서 git checkout newbranch(이동하고 싶은 브랜치명) 명령어를 입력해준다.
◼️ 4-6. Git Hub(깃 저장소에 업로드)
위에 글들 처럼 브랜치를 2개 만들었다고 치면, master와 newbranch 두 개가 있다고 가정하며 하겠다.
[ 원격저장소(origin)에 올릴때 Username for 부분에는 Git Hub 계정 이메일을 Password for 부분에는 인증 토큰을 입력하면 된다. ]
1. 원격저장소(origin)에 master를 올리고 싶을때
터미널의 프로젝트 폴더 위치에서 git push origin master 명령어를 입력해준다.
[ 위와 같이 push 를 해야지만 내가 만든 Gib Hub 저장소에 프로젝트가 올라간다. ]
orgin : 원격저장소
2. 원격저장소(origin)에 newbranch를 올리고 싶을때
터미널의 프로젝트 폴더 위치에서 git push origin newbranch 명령어를 입력해준다.
[ 위와 같이 push 를 해야지만 내가 만든 Gib Hub 저장소에 프로젝트가 올라간다. ]
orgin : 원격저장소
3. 원격저장소(origin)에 브랜치 전부 올리고 싶을때
터미널의 프로젝트 폴더 위치에서 git push origin --all 명령어를 입력해준다.
[ 위와 같이 push 를 해야지만 내가 만든 Gib Hub 저장소에 프로젝트가 올라간다. ]
orgin : 원격저장소
◼️ 4-6-1. Authentication failed for ~use a personal access token instead 에러
만약 Authentication failed for ~use a personal access token instead 에러가 발생한다면 2021년 8월부터 Password 방법이 아닌 token을 이용하여 로그인을 하기 때문에 발생한 오류이다.
오류를 해결하기 위해서
1. Git Hub 접속하여 로그인한다.
2. 우측 상단의 정보에서 Settings 클릭한다.
3. Setting 페이지에서 좌측 아래 Developer setting 클릭한다.
4. personal access token 클릭 후 Generate new token 클릭
5. Note 에는 원하는 사용처 마음대로 입력, expiration 에는 사용을 원하는 기간을 입력 한 뒤 repo 클릭 후 Generate token 클릭
6. 토큰이 생성되면 반드시 복사해야한다.(한번만 보여짐)
7. 다시 로컬 컴퓨터의 깃에 등록을 한다.
터미널의 프로젝트 폴더 위치에서 git config -- global user.name 깃허브 ID값 명령어를 입력해준다.
터미널의 프로젝트 폴더 위치에서 git config -- global user.name 복사한 토큰 명령어를 입력해준다.
참고