← Git을 활용한 협업















버전 관리란?Git저장소(Repository)원격 저장소(Remote Repository)로컬 저장소(Local Repository)저장소 만들기Commitgit loggit checkout원격 저장소에 코드 올리기원격 저장소의 커밋을 로컬 저장소에 내려받기Git의 동작Git에서 파일의 상태Git Config과제Reference


버전 관리란?
버전 관리 시스템은
파일 변화를 시간에 따라 기록했다가 나중에 특정 시점의 버전을 다시 꺼내올 수 있도록 하는 시스템입니다.VCS(Version Control System)을 사용하면 각 파일을 이전 상태로 되돌릴 수 있고, 프로젝트를 통째로 이전 상태로 되돌릴 수 있고, 시간에 따라 수정 내용을 비교해 볼 수 있고, 누가 문제를 일으켰는지도 추적할 수 있습니다.ex) 포토샵이나 그림판으로 작업을 할 때에 실수한 부분이 있다면 ctrl + z를 눌러서 한단계씩 돌아가는데, 이렇게 내가 원하는 시점(버전)으로 이동할 수 있게 해주는 것이 버전 관리이며, 이를 도와주는 툴이 버전 관리 시스템입니다.
Git
- Git Linux를 만든 Linus Torvlads에 의해 만들어졌습니다.
- Git은
형상 관리 도구(Configuration Management Tool)중에 하나입니다. 형상 관리 도구는 다른 말로버전 관리 도구라고도 합니다.
- Git은 분산 버전 관리 시스템에 속합니다. (저장소 자체를 공유)
저장소(Repository)
파일이나 폴더를 저장해 두는 곳입니다.

원격 저장소(Remote Repository)
파일이
원격 저장소 전용 서버에서 관리되며 여러 사람이 함께 공유하기 위한 저장소로컬 저장소(Local Repository)
내 PC에 파일이 저장되는
개인 전용 저장소저장소 만들기
git init
먼저 로컬 저장소를 아예 새로 만드는 방법입니다. 폴더를 하나 만들고 이름을 test 라고 만든 후에
git init 이라는 명령어를 입력해보세요.
이 명령은 .git이라는 폴더를 만듭니다. 이 폴더에는 Git으로 생성한 버전들의 정보와 원격 저장소 주소등의 정보들이 들어있는데 이 .git 폴더를
로컬 저장소 라고 부릅니다. 결국 이 git init 명령어(Git 초기화 과정이라고 합니다)를 통해 로컬 저장소를 만들면 그 때부터 이 폴더에서 버전 관리를 할 수 있습니다.
.git 폴더는 파일의 기본 속성이 ‘숨김’ 이어서 숨김 속성을 풀어주지 않으면 보이지 않습니다. mac: ls -al 로 볼 수 있습니다. window: 폴더 위에 보기 누르고 → 숨김 항목을 체크해주면 .git 폴더가 보입니다.
이제 하나의 파일을 만들어보겠습니다. README.md 라는 파일을 만들고 아무 내용이나 작성하면 됩니다.
Commit

깃은 개발 중인 코드의
이력을 만들 수 있습니다. 깃이 코드 변화를 기록하는 것을 커밋(commit)이라고 합니다.영어로
commit은 여러 의미가 있습니다.그중 깃의 동작과 가장 유사한 의미는
~를 적어 두다입니다.즉, 커밋은 의미 있는 변경 작업들을
저장소에 기록하는 동작입니다.이제 파일을 커밋해보도록 하겠습니다.
먼저 커밋에 추가할 파일을 선택합니다.
커밋에는 상세 설명을 적을 수 있습니다. 설명을 잘 적어놓으면 이 파일을 왜 만들었는지, 왜 수정했는지 알 수 있습니다.
-m 은 message의 약자입니다.
이제 README를 수정한 후에 다시한번 commit을 진행해보세요.
git log
우리가 작업한 내역에 대한 로그를 보고 싶다면 git log라는 명령어를 입력하면 됩니다.

Git으로 무얼 하든 Git 데이터베이스에 데이터가 추가된다. .git 디렉터리에 저장
git checkout

호텔에서 체크인, 체크아웃을 해본 경험이 있으실 것입니다.
체크인, 체크아웃은 나가고 들어옴을 의미합니다.

깃에서 체크아웃은 우리가 커밋한 내역을 이동할 때 사용합니다. checkin이라는 명령어는 존재하지 않고 checkout (방에서 나가는 것)만 존재합니다.
checkout 명령어를 통해 이전 커밋으로 돌아가려면 다음과 같은 명령어를 입력합니다.

이제 README를 수정하기 전으로 돌아간 상태가 됩니다.
원격 저장소에 코드 올리기
이번에는 Github에 협업할 공간인 원격 저장소를 만듭니다. Github에서는 원격 저장소를 레포지토리(Repository)라고 부릅니다.

이제 원격 저장소를 만들었으니 로컬 저장소에 원격 저장소 주소를 알려줘야합니다.

git remote add origin https://github~어쩌구
위 명령어는 origin이라는 이름으로 원격저장소를 추가하는 것입니다.
만약 위와 같이 입력했다면 hyunjin 이라는 이름이 원격저장소의 별명이 되는 것입니다.
보통은 origin이라는 별명을 통해서 원격 저장소를 가리킵니다.

-v 옵션을 줘서 별명과 URL을 함께 볼 수 있다.
이제 로컬 저장소에 있는 커밋들을 push 명령어로 원격저장소에 올릴 수 있습니다.
master는 우리가 커밋을 올리는 branch(가지)의 이름입니다.

결국 하나의 버전을 만들기 위해 변경사항을 선택하는 과정이 add이고, 그렇게 선택한 변경사항을 하나로 묶어 버전으로 만든것이 커밋입니다.
원격 저장소의 커밋을 로컬 저장소에 내려받기
원격 저장소의 코드와 버전 전체를 내 컴퓨터로 내려 받는 것을 클론(clone)이라고 합니다. 클론을 하면 최신 버전뿐만 아니라 이전 버전들과 원격 저장소 주소 등이 내 컴퓨터의 로컬 저장소에 기록됩니다.
Git의 동작

- Working Directory: 우리가 코드를 수정하고 있는 곳
- Staging Area: add 명령어를 사용하면 등록되는 곳
- .git: 숨겨진 폴더. git init이나 git clone을 하면 생성된다. 로컬저장소이다. 이 폴더가 생기면 git으로 추적, 관리하는 대상이다.

- untracked: 아직 tracking이 되지 않은 파일→ 기존에 존재하던 프로젝트에서 git을 초기화하거나 파일을 새로 만들면(또는 처음 저장소를 clone하면) untracked 상태이다.
- tracked: unmodified/modified로 나눌 수 있다. checkout된 이후 수정사항이 있지만 stage되지 않으면 modified된 상태이다.→ modified된 파일만 staging area로 옮겨갈 수 있다.
Git에서 파일의 상태
Git은 파일을
Committed, Modified, Staged 이렇게 세가지 상태로 관리합니다. Committed란 데이터가 로컬 데이터베이스에 안전하게 저장됐다는 것을 의미합니다.
Modified는 수정한 파일을 아직 로컬 데이터베이스에 커밋하지 않은 것을 말합니다.
Staged란 현재 수정한 파일을 곧 커밋할 것이라고 표시한 상태를 의미합니다.
과제
사캠에 깃 레포 만든거 + 커밋 내역 캡처해서 올리기

Reference
- 팀 개발을 위한 Git, Github 시작하기
‘md’ 확장자란 무엇인가요? ’md’ 확장자도 ‘txt’ 확장자와 동일하게 텍스트 문서를 적기 위한 파일을 나타냅니다. 이렇게 ‘md’ 확장자로 만든 파일은 ‘마크다운 문서’라고 부릅니다. 마크다운 문서도 다른 프로그래밍 언어와 같은 간단한 문법이 있습니다. 예를 들어 텍스트 앞에 ‘#’을 붙이면 이를 문서의 제목으로 인식합니다. 이로 인해 서식이 있는 보기 편한 문서를 만들 수 있는 것이 마크다운 문법입니다.
