깃 정리 노션 페이지 링크1 - 유데미 강의 정리 및 실제 활용/작동 방식 위주
깃 정리 노션 페이지 링크2 - 개념 및 커맨드, 터미널 명령어, 참고자료 등
자주 쓰는 필수 커맨드
- git pull origin main 레포에 저장한거 내 로컬저장소로 가져오는 명령어
- git status 현재 상태 확인
- git add . (.앞에 띄어쓰기 해야함)
- git commit -m "커밋 할 멘트 추가"
- git push
- git stash
- git stash pop
- git remote -v
- git remote remove origin
- git branch
커맨드 모음 - (참고: git help tutorial)
- clone 저장소를 복제해 새 디렉터리로 가져옵니다
- init 빈 깃 저장소를 만들거나 기존 저장소를 다시 초기화합니다
변경 사항에 대한 작업 (참고: git help everyday)
- add 파일 내용을 인덱스에 추가합니다
- mv 파일, 디렉터리, 심볼릭 링크를 옮기거나 이름을 바꿉니다
- restore Restore working tree files
- rm 파일을 작업 폴더에서 제거하고 인덱스에서도 제거합니다
커밋 내역과 상태 보기 (참고: git help revisions)
- bisect 이진 탐색으로 버그를 만들어낸 커밋을 찾습니다
- diff 커밋과 커밋 사이, 커밋과 작업 내용 사이 등의 바뀐 점을 봅니다
- grep 패턴과 일치하는 줄을 표시합니다
- log 커밋 기록을 표시합니다
- show 여러가지 종류의 오브젝트를 표시합니다
- status 작업 폴더 상태를 표시합니다
Git ?
- 버전 관리 시스템, VCS → Version Control
- Version control is software that tracks and manages changes to files over time.
- 이전 버전의 파일을 다시 볼 수 있게 해주고 버전들 간의, 파일들 간의 변화를 비교하거나, 변화를 되돌리고, 다른 작업자와 그 변화를 공유하는 데 도움.
Git 시각화
- Track changes across multiple files
- Compare versions of a project
- "Time travel" back to old versions
- Revert to a previous version
- Collaborate and share changes
- Combine changes
GIT vs GITHUB
-
Git - 버전 관리 소프트웨어, 사람들의 컴에서 실행. 인터넷 없이도 실행되는 소프트웨어.
-
GitHub - 웹서비스 깃 저장소. 클라우드에 저장해서 사람들과 공동으로 작업할 수 있게 해줌. 인터넷도 필요.
-
git config --global user.name "heexohee” → 사용자 이름 설정
-
global 옵션을 사용하면 깃은 username또는 user.name을 인스턴스를 가져올 때마다 같은 이름으로 인식함.
-
git config --global user.email rsoy2918@naver.com → 사용자 이메일 설정(github이랑 같게)
17: 깃 크라켄 설치함(GUI)
18: 터미널? CUI ↔ GUI(그래픽 유저 인터페이스)
터미널 명령어
-
open . finder열기
-
ls 다른 폴더 안 엿보기(리스트로)
-
pwd 경로 보기(내가 있는 위치를 정확하게)
-
cd 디렉토리를 이동하는 커맨드
-
cd .. 디렉토리 경로 뒤로 후진
-
touch 파일명.확장자 → 파일 생성 (띄어 쓰기 구분으로 여러개 동시에 생성도 가능)
-
touch 폴더명/폴더명/파일명. 확장자 → 다른 경로에 새 파일 생성도 가능.
-
mkdir → 디렉토리 만들기
Git repo?
- 깃이 있다는 것은 활성화하거나 사용하고 있다는 뜻은 아니고 단지 컴퓨터에 깃이 설치되어 있다는 것
- 깃에게 새로운 저장소를 생성하라고 지시해야함. 저장소는 그 프로젝트의 이력을 갖고 있는 깃 작업 공간.
- 모든 저장소는 고유 이력을 갖고 있다.
- 저장소는 서로 관련도 없고 연결되어 있지도 않다. 캡슐화된 거품?
- 만약 깃을 사용하고 싶다면 각각의 프로젝트의 폴더에 가서 깃 저장소를 생성해야하고 깃에게 이것을 지시해야함.
- 각 폴더에 무슨일이 생겼든, 어떤 깃 명령어를 실행하든, 깃으로 어떤 이력을 작성하든 완전히 별개의 것이고 각 폴더의 깃은 연결되지 않음.
깃 저장소를 생성하고 초기화 하는 방법?
-
git status → gives information on the current status of a git repository and its contents.
-
It's very useful, but at the moment we don't actually have any repos to check the status of!
-
깃 사용 중이라면 명령을 실행했을 때 보게 되는 것은 변경사항.
-
fatal: (현재 폴더 또는 상위 폴더 중 일부가) 깃 저장소가 아닙니다: .git → 깃 저장소 정보가 없다는 뜻.
-
git init → 터미널에서 어느 디렉토리에 있든 새 저장소를 초기화 하고 생성함.
-
Use git init to create a new git repository.
Before we can do anything git-related, we must initialize a repo first!
This is something you do once per project.
Initialize the repo in the top-level folder containing your project
Git 폴더
- ls -a → 쓰면 숨겨진 파일(.git) 도 볼 수있다.
- rm -rf .git → 프로젝트에 대한 모든 이력을 삭제함.
- 만약 이력이 있는데 디렉토리를 삭제한다면 모든 자료를 잃어버림. 그래서 .git을 숨겨둠.
Git 실수!
- 깃 저장소가 있을 때 한 디렉토리 안에서 초기화해야 함. 깃은 이 렉토리 안에 벌어지는 모든 것을 주시, 안에 있는 하위 디렉토리 까지 모두 지켜봄.
- 그 폴더 안에 포함된 모든 것, 상위 레벨에서 제어하는 하향식(TOP-DOWN 방식)
- 어떤 프로젝트를 위해 이 디렉토리 안에서 변경하는 파일이나 폴더는 깃에 의해 추적됨.
- 현재 존재하고 있는 저장소 안에 다른 저장소를 초기화하고 싶지 않다는 것을 이해하는 것은 매우 중요→ DON’T INIT A REPO INSIDE OF A REPO! (Before running git init, use git status to verify that you are not currently inside of a repo.)
- 깃은 폴더 안에 벌어지는 모든 것을 추적하기 때문에 혼란스러울 것. (깃이 깃이 추적하는 형태가 되면 혼란스럽게 됨.)
- git init 명령어 실행할 때, 그 저장소 안에 있지 않도록 해야함! git status로 확인해줘라!
- 보통 어떤 프로젝트를 위해 폴더를 만들면, 그 폴더 안에서 깃을 초기화 하는 것이 원칙(권장)→ 대부분은 사람들은 한 프로젝트 당 한개의 저장소를 원하고 항상 git status를 실행함.
- 초기화하기전에 git status로 확인하기! (.git 제거해서 정리 가능)
커밋 워크 플로우 개요
- 보통 하나의 깃 저장소에는 엄청나게 많은 커밋들이 있다.
- 궁극적으로 이전 명령으로 돌아갈 수 있는 방법과 커밋을 되돌리는 방법, 이전 커밋에서 엿보는 방법 등.
- 커밋하는 것이 파일을 저장하는 것과 같은 것이 아니다. 파일을 저장하는 것 이상으로 어떤 것을 구축한다는 생각.
- 커밋하기 전에 먼저 수정해서 파일을 저장해야 함.
- 변경사항을 만들면, 그것들을 묶어서 커밋할 수 있다.
- 우리가 커밋에 포함시키고 싶은 특정 변경 사항을 호출하는 중간 단계가 있다. 선택적으로 커밋을 할 수 있게 해줌.
- 예) 7개 파일을 변경했을 때, 변경사항을 그룹화하여 커밋할 수 있다.(이것이 중간 단계 커밋) 반복적으로 커밋하지 않고 대신 핀셋으로 뽑듯 몇가지를 선택해서 그 변경사항만을 커밋할 수 있다.