1-4. 버전관리와 commit - 개념탑재
-
commit(커밋) : '현재 프로젝트의 상태'를 저장한 것
-
프로젝트 상태와 현재 프로젝트 상태의 차이를 자동으로 알려줌. 빨간색 이 삭제된 내용, + 초록색이 추가된 내용.
-
commit 들은 언제 했는지 정보도 포함하고 있으니까 순서대로 보면 그 자체가 히스토리(history)가 됨. 이것을 commit history 또는 commit log(로그, 기록) 라고 합니다!
-
버전 관리 : 누가, 언제, 현재 프로젝트의 내용이 어떤지 정보를 남긴다는 것
1-5. 버전관리와 commit - 실습 01
파일/폴더명 짓는 법
-
영어로, 특수문자 없이(띄어쓰기도 안돼요!) 만들어주세요. 단어를 연결할 때는 - 나 _ 둘 중 하나를 사용하도록 합시다! 컴퓨터가 다른 문자가 섞이면 잘 못 알아들을 수 있어요.
-
내용(데이터)를 제대로 나타내주는 이름을 지어주세요!
파일/폴더에 담긴 내용은 곧 데이터입니다. 데이터를 제대로 관리하는 첫 걸음은 제대로 이름 붙여주는 것이에요. (예. 11111.txt 🙅 / project_list.txt, commit_practice.py 🙆♀️ )
예를 들면, 프로젝트 이름을 git-tutorial, taco-recipe, constitution-of-republic-of-korea 로 짓는 것처럼요!
로컬 저장소 추가
로컬> 로컬 저장소 추가하기
.git이라는 폴더가 숨김파일로 생김
숨김파일 보기
command + shift + . 을 누를 때마다 숨김 파일이 보였다가 보이지 않았다가 합니다.
git 프로젝트 삭제법
- 오른쪽 > 삭제 눌러서 휴지통으로 이동 또는 북마크 제거하기
- 북마크 제거 : 소스트리에서만 보이지 않음. .git폴더도 그대로 남아있음
- 휴지통으로 이동 : 내 컴퓨터에서도 파일이 삭제됨
- git 정보만 제거하기 : .git폴더를 삭제하면 그냥 일반 프로젝트가 됨
커밋하기
파일 상태 > 커밋 하기
1-6. 버전관리와 commit - 실습 02
add (또는 staging, 스테이징) : 내가 commit 하기 위한 파일만 선택하는 것을
add(staging) 를 사용하면, 컴퓨터에서 여러 파일을 수정했어도 '기능 A 수정' 에 관련된 파일만 골라서 commit 할 수 있어요. 작업내역을 깔끔하게 관리하기 위해서는 꼭 아래처럼 commit 해주세요!
- 내가 기록할 작업 내역이 무엇인지 생각하고,
- 관련된 파일만 add 해서
- 작업내역을 나타내는 commit 메시지 적기!

커밋
이라고 적힌 부분(아래 그림의 2130a53, 043d9e4 등)은 해당 commit 에 붙여주는 유일한 값. 이것을 commit id(커밋 아이디) 라고 합니다. commit 을 구분하기 위해 git 이 붙여주는 아이디
commit id 는 나중에 커밋을 관리하고 되돌릴 때 사용하는 중요한 정보.
각 commit 을 관리하기 위해 id 가 부여된다! 체크 ✅
- commit id : commit 을 구분하기 위한 유일한 값.
- 작업 일자 (날짜와 시간)
- 작업한 사람(작성자 author)
- 작업 내역 (commit 메시지)
- 작업 내역의 순서 : 해당 commit 의 직전 commit 이 무엇인지 정보
1-7. 버전관리와 commit - 정리
- 버전관리를 한다는 것은 프로젝트 상태가 변경되는 정보를 알고 있다는 것입니다. Git 은 commit 을 사용해서 버전이 달라지는 것을 관리합니다.
- 컴퓨터에 있는 프로젝트를 Git 이 관리하는 프로젝트로 만들 수 있습니다. 앞으로 Git 으로 관리할꺼야! 하고 설정해주면 됩니다. 이 작업을 git 초기화(git initialize)한다고 표현합니다.
- 현재 프로젝트의 상태를 찰칵 📸 저장하는 것을 commit 이라고 합니다.
- commit 에는 아래를 포함합니다.
- 누가(author), 언제 commit 했는지의 정보와 프로젝트 변경 내용
- 작업내역이 어떤 것인지 알아볼 수 있게 적는 메시지를 'commit 메시지'라고 합니다.
- commit 에 반영할지 안할지는 파일 단위로 선택할 수 있습니다. commit 에 반영할 파일을 선택하는 것을 add (혹은 staging, 스테이징) 이라고 합니다.
- commit 한 기록은 history 로 볼 수 있습니다.
- 지금까지 우리가 한 작업은 'git 초기화하기(initialize) - add(staging) - commit' 입니다.
- git 초기화는 처음에 단 한번만 해 주면 됩니다. 작업 내역을 저장하기 위해서는 add - commit 만 하면 됩니다.
1-8. 원격 repo 사용하기 - 개념탑재
- repo(리포, repository 리포지토리의 약자) - 'Git으로 관리되는 프로젝트'
- 로컬 repo(local repository) : 내 컴퓨터에 저장되어있는 리포지토리
- 원격 repo(remote repository) : Github 처럼 다른 곳에서 접속할 수 있는 공간에 저장되어있는 것
- 추적(Tracking, 트랙킹 / branch tracking) : 로컬 repo 가 원격 repo 를 연결하는 것

- push(푸쉬) : 로컬 repo 의 commit 들을 원격 repo 에 반영하는 것
- pull(풀) : 원격 repo 의 commit 들을 로컬 repo 에 반영하는 것
- 로컬 repo 를 기준으로 생각하면 되겠죠? 나(로컬 repo)의 내용을 보내주는 거니까 push! 나(로컬 repo)로 내용을 땡겨오는 거니까 pull!

- clone(클론, 복제) : 원격 repo 를 내 컴퓨터에서도 사용할 수 있도록 가져오는 것. 일종의 초기 다운로드

1-9. 원격 repo 사용하기 - 실습
repo 만들기
-
로그인 후 뜨는 페이지에서 초록색 new 누르기

-
프로젝트 설명 페이지, 라이센스 등 여러 설정을 할 수 있지만 일단은 가장 간단한 형태로 만들어볼게요!

-
아래처럼 뜨면 repo 가 잘 만들어진겁니다! 빨간 부분이 내 원격 repo 의 주소입니다. 버튼을 클릭하면 주소가 복사됩니다.

Tracking 하기
Github 에 있는 repository 와 내 컴퓨터에 만들어놓은 repository 연결한다
1. 소스트레이서 원격 깃허브를 추가한다

소스트리 오른쪽 상단 설정 누르기

origin 은 원격에 연결하는 저장소를 말할 때 일컫는 이름.
호스트 종류와 사용자명 확인하기

지구본 모양 누르기

아까 만든 레포 클릭하기

확인 누르기

확인 누르기
2. 브랜치 이름을 main으로 변경하기

- 푸쉬하기

상단 탭의 푸시를 누른다음 위와 같은 창에서 확인을 누르기
- 깃허브에 업데이트 된 것 확인하기

풀(Pull) 하기
풀에 새로운 커밋 내역 있는지 확인하고

풀 누르고 위와 같은 상태에서 확인
원격 repo Github 에서 없애는 방법
-
세팅을 누른다

-
옵션 선택 후 마지막으로 스크롤을 내린다

-
Danger Zone 에 있는 Delete this repository (이 repository 지우기) 클릭!

-
정말로 지울 것인지 확인하는 창이 뜹니다. 절대 복원할 수 없으니 꼭 주의하세요!
- 하단 빈 칸에
user이름/repository명
형식으로 그대로 적어주세요.
그런 다음 I understand the consequences, ~ 버튼을 누르면 repo 가 삭제됩니다.

초심자를 위한 꿀 패턴! pull - commit - push
- 혼자 Git 프로젝트 작업을 할 때는
pull
-> 로컬 repo commit
-> push
순서로 하면 좋아요.
- 원격 repo 와 로컬 repo 에서 같은 파일을 수정하면 Git 이 같은 파일을 수정했는데 내가 어떤 파일을 최종으로 할까? 라고 확인 메시지를 줍니다. (정확한 내용은 곧 배울꺼에요!) 이런 것을 바로 충돌(conflict)이라고 표현해요.
- 충돌을 피하기 위해서는 아래 순서를 따라주는 게 편해요. 같은 파일을 동시에 수정해버리면 충돌이 나니까 두 repo 의 상태를 똑같이 맞춰준 후에 변경작업을 해주는 거에요.
- 원격 repo 와 로컬 repo 의 상태를 똑같이 맞춰주기, 즉 로컬 repo 에 원격 repo 작업내역 가져오기 (
pull
)
- 로컬 repo 의 작업 내용을 저장하고 (
commit
)
- 원격 repo 에 로컬 repo 내용을 반영 (
push
)
- 원격 repo 에 변경사항이 생겼다! 하면 먼저
pull
하고 로컬 repo 에서 작업하면 많은 경우 충돌을 피할 수 있어요.

clone - 원격 repo 를 내 컴퓨터에 가져오기
- 원격 repo를 내 컴퓨터에 가져올 수는 없을까요?
- A 컴퓨터에서 작업한 걸 github 에 올리고 B 컴퓨터에서 내용을 보고 싶을 때
- 다른 사람의 repo 를 나도 다운로드 받아서 보고 싶을 때가 있겠죠!
- 이때 사용하는 것이 clone 입니다. 클론! 복제하다라는 뜻이죠. repo 를 내 컴퓨터에 복제해오는 겁니다.

1. 컴퓨터에 원격repo파일을 저장할 폴더 만들어두기
2. 가져올 원격 repo의 주소 복사하기

3. 소스트리에서 새로 만들기>url 복제 클릭하기

- 복사한 Url을 붙혀넣은 후 클론 클릭. 목적지 경로는 아까 만들었던 폴더를 선택해준다.
