Day 01
이 글은 팀 개발을 위한 Git/Github 시작하기를 읽으며 실습한 내용을 정리한 것입니다.
Chapter 0 - 빠른 실습으로 Git, GitHub 감 익히기
01. Git, 그리고 GitHub
버전 관리란?
- 내가 원하는 시점(버전)으로 이동할 수 있게 해주는 것이 버전 관리, 이를 도와주는 툴이 버전 관리 시스템
- 팀 프로젝트에 참여하는 인원이 많을 수록, 프로젝트 기간이 길수록 어느 파일이 최종 업데이트 파일인지 확인할 길이 막막해진다. 그래서 여럿이 함께 작업하는 협업 프로젝트에는 버전 관리가 필요
Git, 그리고 GitHub
- Git은 소스코드 버전 관리 시스템
- GitHub는 Git으로 관리하는 프로젝트를 올려둘 수 있는 Git 호스팅 사이트 중 하나
02. 로컬저장소에서 커밋 관리하기
로컬저장소 만들기
- 프로젝트를 진행할 폴더에 아래의 명령어(Git 초기화 과정)를 통해 로컬 저장소를 만듦(이 때 생성되는 .git 폴더를 로컬저장소라고 부름)
git init
첫 번째 커밋 만들기
-
버전 관리를 위해 내 정보를 등록해야 함
git config --global user.email "github 가입 이메일" git config --global user.name "github 가입 username"
-
그 다음
git add git commit -m "커밋 메시지" git push
다른 커밋으로 시간 여행하기
-
개발을 하다가 이전 커밋부터 다시 개발하고 싶다면 이전 커밋으로 돌아가면 된다.
git log
위의 명령어를 통해 지금까지 만든 커밋과 돌아갈 커밋 id를 확인하고
git checkout 커밋id
위 명령어를 사용하면 원하는 커밋으로 돌아갈 수 있음
03. Github 원격저장소에 커밋 올리기
원격저장소에 커밋 올리기
-
원격저장소에 올리고 싶은 작업물이 있는 폴더로 이동한 뒤,
git remote add origin 내 원격저장소 주소
명령어를 통해 내 로컬저장소에 원격저장소 주소를 알려주기
위의 명령어를 수행한 후에는 아래처럼 원격저장소에 push하면 됨
git add git commit -m "~~~" git push origin master
04. GitHub 원격저장소의 커밋을 로컬저장소에 내려받기
원격저장소의 커밋을 로컬저장소에 내려받기
-
원격저장소의 코드와 버전 전체를 내 컴퓨터로 내려받는 것을 클론(clone)이라고 한다. 클론을 하면 최신 버전뿐만 아니라 이전 버전들과 원격저장소 주소 등이 내 로컬저장소에 저장된다.
-
git clone 명령어 뒤에 원격저장소 주소를 적고, 한 칸 띄고 마침표를 찍어준다. 마침표는 현재 폴더에 받으라는 뜻이다. 점을 찍지 않으면 현재 폴더 안에 [iTshirt] 폴더가 생긴다.
git clone https://GitHub.com/Cat-Hanbit/iTshirt.git .
원격저장소의 새로운 커밋을 로컬저장소에 갱신하기
- 아래 명령을 입력한다. pull은 원격저장소에 새로운 커밋이 있다면 그걸 내 로컬저장소에 받아오라는 명령어
git pull origin master
PART 1 - GUI 환경에서 버전 관리 시작하기
Chapter 1 - GUI를 위한 버전 관리 환경 구축하기
- 현업에서도 CLI 형태로 조작하기 힘든 경우에는 GUI 프로그램을 많이 사용
- 본인 개발에 편한 것으로 많이 선택
- 보통 여러 사람이 같이 repository를 사용하게 되면, cherry-pick 해서 다른 사람의 브랜치 내용 일부를 가져와야 한다던지 다양한 문제를 겪을 수 있는데, 이를 CLI로 하면 불편함이 많아서 GUI 프로그램을 쓰는 게 더 편리하고 일도 금방 끝남
소스트리
- 소스트리는 Git 사용을 도와주는 GUI 프로그램이다.
소스트리 화면 구성 둘러보기
-
로컬저장소 목록(Local)
- 컴퓨터에 저장되어 있는 Git 로컬저장소 목록을 보여준다.
- Git으로 관리되는 모든 저장소가 자동으로 표시되는 것은 아니며, Add 탭에서 소스트리에 추가할 수 있다.
-
원격저장소 목록(Remote)
- 원격저장소 계정에 연결되어 있는 모든 원격저장소를 볼 수 있다.
- GitHub 계정을 추가하면, GitHub에서 등록한 원격저장소 목록이 뜬다.
-
원격저장소 클론(clone)
- 원격 서버에 올라와 있는 Git 저장소를 내 로컬 컴퓨터에 다운로드 및 연동할 수 있다.
-
로컬저장소 추가(Add)
- 내 컴퓨터에 만들어져 있는 로컬저장소를 소스트리에서 관리할 수 있도록 추가한다.
-
로컬저장소 생성(Create)
- 내 컴퓨터에 있는 일반 폴더를 Git으로 버전 관리할 수 있도록 로컬 저장소를 생성한다. 모든 폴더는 자동으로 Git으로 버전 관리되는 게 아니고 이렇게 해당 폴더 내에 로컬저장소를 생성해야 그때부터 버전관리를 할 수 있다.
-
새 탭(+)
- 새로운 탭을 열어 다른 저장소를 관리할 수 있다.
Chapter 2 - 혼자서 Git으로 버전 관리하기
01. 로컬저장소를 소스트리에 불러오기
- Add를 통해 내 로컬 저장소를 불러올 수 있다.
- 왼쪽 사이드바에서 History를 클릭하면 내가 만들었던 커밋이 그래프로 보인다.
로컬 저장소의 정체는 .git 폴더
- 위 처럼 수행했던 커밋들이 그래프로 보이는 것은 .git 폴더에 저장된 정보들 덕분이다. 이 폴더가 바로 로컬저장소이다. CLI 환경에서는 'git init', GUI 환경에서는 Create 아이콘을 클릭하고 폴더를 선택하면 만들어진다.
- Git은 이 폴더에 버전 관리한 데이터와 이를 올릴 원격저장소의 주소 등 필요한 정보를 저장한다.
02. 소스트리로 커밋 만들고 푸시하기
vscode에서 새 파일을 만들고 수정하기
소스트리에서 파일은 선택(add)하고 커밋(commit)으로 만들기
-
로컬에서 파일을 만들고 수정한 뒤 소스트리
- 아까와 달리 그래프 최상단에 '커밋하지 않은 변경사항'이 생김
- 이 텍스트를 선택하면 소스트리 하단의 [스테이지에 올라가지 않은 파일]에 방금 만든 파일이 보이는 걸 확인할 수 있다.
-
add
- +버튼을 누르면 add가 됨
- +버튼을 누르면(add를 하면) 파일이 [스테이지에 올라간 파일]로 올라간다.
-
commit
- 아래쪽에 커밋 메시지를 작성하고 커밋 버튼 누르기
-
push
- 최신 커밋에는 main 꼬리표가, 하나 이전 버전에는 [origin/main]이라는 꼬리표가 붙어있다. 이는 내 컴퓨터의 로컬저장소의 버전은 최신인데 원격저장소의 버전은 하나 이전의 버전인 상태라는 뜻이다.
- 정리하자면 아무것도 붙지 않은 [master]는 내 컴퓨터 로컬저장소의 버전을, 앞에 origin이 붙은 [origin/master]는 GitHub 원격저장소의 버전을 가리키는 것이다.
- 소스트리 상단의 Push 버튼을 클릭하고, Push 하면 된다.
- 이 명령은 현재 줄기인 main의 모든 새로운 커밋을 원격저장소에 올리겠다는 뜻이다.(git push origin main과 동일)
03. Git 뜯어보기
커밋은 차이점이 아니라 스냅사진
- SVN과 같은 버전 관리 시스템과 Git의 가장 큰 차이점은 Git이 커밋에 바뀐 것만 저장하는 것이 아니라 전체 코드를 저장한다는 것이다.
- 전체를 저장하는 Git보다 차이점만 저장하는 SubVersion이 훨씬 용량도 작고 빠를 것 같지만, 차이점만 저장하는 방식은 버전을 보여줄 때 파일이 만들어졌던 맨 처음까지 거슬러 올라가며 바뀐 점을 모두 반영하는 계산을 해야한다.(Ex. README.md가 백 번 바뀌었다면 백 번의 계산을 모두 해야함)
- 파일의 스냅샷을 저장하는 Git은 계산이 필요 없다. 바로 앞에서 바뀐 커밋이랑 비교하는 연산 한 번만 하면 된다.
- 바뀌지 않은 파일은 이전 파일의 링크만 저장하기 때문에 용량도 적고 계산도 필요없다.
Git으로 관리하는 파일의 4가지 상태
- 프로젝트 폴더에 처음 Git 초기화를 하고 README.md와 app.js 파일 두 개를 만들었다. 이 두 파일은 한 번도 커밋되지 않은 파일이기 때문에 파일 상태는 '추적 안됨(untracked)'이다.
- add 명령어를 통해 두 파일 모두 스테이지에 올린다. 파일 상태가 '추적 안됨'에서 '스테이지됨(staged)'으로 변경된다.
- 스테이지에 있는 파일 전체를 commit 명령어를 통해 하나의 스냅샷, 즉 버전으로 만들었다. 파일 상태가 '수정 없음(unmodified)'로 변경된다. '수정 없음' 상태로 된 파일은 다시 다른 수정을 할 수 있다.
- push 명령어를 통해 원격저장소에 올린다.
- app.js 파일을 수정해서 파일 상태를 '수정 없음'에서 '수정함(modified)'로 변경하고, app.css 파일을 새로 만들어준다. 새로 만들었기 때문에 파일 상태는 '추적 안됨' 상태이다.
- 파일 상태가 '수정 없음'인 README.md 파일은 스테이지로 올릴 수 없다. 나머지 두 파일을 add를 통해 스테이지에 올린다. README.md 파일은 add하지 않았지만 변경사항이 없었기 때문에 이미 스테이지에 올라와 있다.
- 커밋을 통해 스냅샷을 만들어 준다. 이 커밋은 앞서 만든 커밋에 연결되어 있다. 따라서 앞 커밋에 비해 이번 커밋은 app.js가 수정되었고 app.css가 추가되었다는 것을 Git이 계산을 통해 알아낼 수 있다.
- push를 통해 새로 만든 하나의 커밋 또한 원격저장소에 올린다.
Author And Source
이 문제에 관하여(Day 01), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@js2_11/Day-01
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
- 현업에서도 CLI 형태로 조작하기 힘든 경우에는 GUI 프로그램을 많이 사용
- 본인 개발에 편한 것으로 많이 선택
- 보통 여러 사람이 같이 repository를 사용하게 되면, cherry-pick 해서 다른 사람의 브랜치 내용 일부를 가져와야 한다던지 다양한 문제를 겪을 수 있는데, 이를 CLI로 하면 불편함이 많아서 GUI 프로그램을 쓰는 게 더 편리하고 일도 금방 끝남
로컬저장소 목록(Local)
- 컴퓨터에 저장되어 있는 Git 로컬저장소 목록을 보여준다.
- Git으로 관리되는 모든 저장소가 자동으로 표시되는 것은 아니며, Add 탭에서 소스트리에 추가할 수 있다.
원격저장소 목록(Remote)
- 원격저장소 계정에 연결되어 있는 모든 원격저장소를 볼 수 있다.
- GitHub 계정을 추가하면, GitHub에서 등록한 원격저장소 목록이 뜬다.
원격저장소 클론(clone)
- 원격 서버에 올라와 있는 Git 저장소를 내 로컬 컴퓨터에 다운로드 및 연동할 수 있다.
로컬저장소 추가(Add)
- 내 컴퓨터에 만들어져 있는 로컬저장소를 소스트리에서 관리할 수 있도록 추가한다.
로컬저장소 생성(Create)
- 내 컴퓨터에 있는 일반 폴더를 Git으로 버전 관리할 수 있도록 로컬 저장소를 생성한다. 모든 폴더는 자동으로 Git으로 버전 관리되는 게 아니고 이렇게 해당 폴더 내에 로컬저장소를 생성해야 그때부터 버전관리를 할 수 있다.
새 탭(+)
- 새로운 탭을 열어 다른 저장소를 관리할 수 있다.
로컬에서 파일을 만들고 수정한 뒤 소스트리
- 아까와 달리 그래프 최상단에 '커밋하지 않은 변경사항'이 생김
- 이 텍스트를 선택하면 소스트리 하단의 [스테이지에 올라가지 않은 파일]에 방금 만든 파일이 보이는 걸 확인할 수 있다.
add
- +버튼을 누르면 add가 됨
- +버튼을 누르면(add를 하면) 파일이 [스테이지에 올라간 파일]로 올라간다.
commit
- 아래쪽에 커밋 메시지를 작성하고 커밋 버튼 누르기
push
- 최신 커밋에는 main 꼬리표가, 하나 이전 버전에는 [origin/main]이라는 꼬리표가 붙어있다. 이는 내 컴퓨터의 로컬저장소의 버전은 최신인데 원격저장소의 버전은 하나 이전의 버전인 상태라는 뜻이다.
- 정리하자면 아무것도 붙지 않은 [master]는 내 컴퓨터 로컬저장소의 버전을, 앞에 origin이 붙은 [origin/master]는 GitHub 원격저장소의 버전을 가리키는 것이다.
- 소스트리 상단의 Push 버튼을 클릭하고, Push 하면 된다.
- 이 명령은 현재 줄기인 main의 모든 새로운 커밋을 원격저장소에 올리겠다는 뜻이다.(git push origin main과 동일)
Author And Source
이 문제에 관하여(Day 01), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@js2_11/Day-01저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)