깃은 어렵다
캐릭터도 이상하게 생겼다
고양이와 문어의 조합이라니...
이름도 옥토캣이란다.
아무튼 깃과 깃허브에 대해서 알아보자 ~
일종의 로컬 저장소이다.
자꾸 파일을 수정할때 관리가 불편해지기 때문에 쓴다
언제든 이전 버젼으로 되돌아갈 수 있다!
또 협업 같은걸 할때 이력이 남기 때문에
프로젝트 중 누가 잘못했는지 추적해서 검거가 가능하다!
인터넷이 필요없어도 작업할 수 있다!
깃을 사용한 프로젝트 저장소, 원격저장소.
오픈소스 소셜네트워크.
나 이제 깃 시작할께~
깃을 시작하는 명령어.
먼저 작업할 폴더로 위치를 옮기자.
명령어를 치면 .git 이라는 숨김 폴더가 만들어진다.
여기에 우리가 폴더에서 변경한 모든 내용들이 저장된다.
만약 이 .git 숨김폴더를 지우면 깃으로 변경사항을 추적할 수 없다!
깃 프로젝트의 상태를 확인할 수 있는 명령.
git add나 git commit을 아직 하지않으면 untrakced 상태. 깃이 알아차리지 못한다.
git에게 파일을 추적하라는 명령.
보통 git add . 으로 변경한 모든걸 트래킹 하는데
따로 추적하고 싶은 파일만을 넣을 수도 있다.
이를 스테이징이라고 하고, 추적이 되면 스테이지 단계에 들어선 것이다.
추적을 풀고 싶을땐 git rm 명령을 써보자 ~
파일을 로컬저장소에 저장 및 메시지 입력.
깃이 폴더의 변경 내용을 저장하는 단위를 커밋이라고 부르는데 전에 반드시 add 명령어로 스테이지 상태를 거쳐야 비로소 커밋을 만들 수 있다.
메시지 입력은 예를 들어 Fix: 로그인 작업 수정완료 이런식으로 쓴다.
git commit 까지만 쓰면 vi에디터 같은게 열리면서 commit 내역을 더 자세하게 쓸 수가 있다.
git commit -am 을 쓰면 add와 commit, 즉 스테이징과 커밋단계를 한번에 할 수 있다
이전 커밋에 변경사항을 추가하고 싶을 때는 git commit --amend 명령을 사용한다.
주의 할점이 이전 커밋에 현재의 변경 내용을 추가하는 것이다!
nothing to commit 또는 한글로 커밋할 사항없음 작업폴더 깨끗함 이라고 뜬다면 잘된것!
git add 하기 전 git status => 빨간글씨!
git add 한 후 git status => 초록글씨!
git commit 후 git status => nothing to commit!
당황하지 말자!텍스트
이때까지 commit된 작업들을 볼 수 있다.
맨 위가 가장 최근에 한 작업이다!
git log --graph 좀 더 이쁘게 보인다.
git log main..taehyunkim 앞에다가 기준이 되는 브랜치 main을 쓰고 뒤에 ..으로 뒤에 비교할 브랜치 명을 입력해준다. 이렇게 하면 기준인 main 브랜치를 대비하여 taehyunkim 브랜치에 추가한 변경사항 등을 확인할 수 있따.
커밋에 변경 내용이 반영되었느지 확인하려면 git show 명령을 쓰면된다
우리가 만든 레파지토리를 origin이라는 이름으로 원격저장소 주소를 등록, git remote는 원격저장소를 관리하는 명령이다.
원격저장소를 지움.
내 브랜치를 확인.
기준이 되는 main 브랜치에 새로운 브랜치 taehyun을 생성하는 명령
브랜치를 이동하는 명령.
처음에는 기준이 되는 master 또는 main 브랜치로 자동으로 설정이 되어있다.
위에서 브랜치를 새로 만든후 git checkout 명령으로 만든 브랜치 명을 써주면 그 브랜치로 이동가능!
git branch 명령을 쓰면 *표시가 우리가 만든 브랜치 앞에 찍힌것을 볼수 있다.
만들고 바로 그 브랜치로 이동하고 싶다면 git checkout -b 브랜치명 하면 된다!
브랜치를 main으로 바꿈.
git checkout 으로 바꾸는것과 git branch -m 으로 바꾸는것 차이가 뭐가 있나???
내가 만든 taehyun 브랜치에서 열심히 만들고 add와 commit을 했다. 그 다음 원래 기준이 되는 main 또는 master 브랜치에 이를 반영하고 싶다면 우선 merge를 받을 브랜치로 git checkout 명령을 통해서 이동을 한 후 거기서 git merge merge가 될 브랜치명을 적어준다.
햇갈리는데 간단하게 말하면
Main 브랜치에 taehyun 브랜치를 merge 시키고 싶다! 그러면
git checkout Main 우선 기준이 되는 Main, 즉 merge 받을 브랜치로 이동한 후
git merge taehyun 명령을 하면 된다는 것이다. (여기서 브랜치 위치는 Main 임을 주의!)
이렇게 하면 원격저장소를 자신의 컴퓨터에 복제하게 된다.
다운로드된 원격저장소는 그 저장소 이름으로 자동으로 하위폴더를 생성한다.
원격저장소(origin)에 해당 브랜치에 있는것들을 집어넣는다.
위에서 원격저장소에서 clone을 다운받고 자신의 로컬에서 수정을 하면서 add, commit을 했으면 이 작업한 것을 다시 원격으로 업로드 하는 명령이다.
협업을 하다가 보면은 하나의 clone을 여럿이서 받고 거기서 각자 자신의 브랜치를 만들어 수정을 하다가 push를 하게되는데 이때 다른사용자가 먼저 push를 하거나 하면 충돌이 일어나는데 이때 자신이 현재 main 브랜치의 내용과 원격저장소의 내용이 서로 다르므로 git fetch 명령을 사용하여 자신의 main 브랜치를 현재 원격저장소 상태에 따라 갱신시켜주어야 한다!
그러면 또 자신의 main 브랜치와 작업하던 브랜치와
는 다시 자신의 기준 브랜치 main 또는 master로 이동한 후 pull 명령으로 자신의 기준 브랜치를 갱신시켜 주어야 한다!
origin: 원격저장소의 기본이름.
브랜치 중 가장 중심이 되는 기본 브랜치. 요즘은 인종차별 이슈 때문에 master 브랜치에서 main 브랜치로 넘어가는 추세라 한다.
추적하지 않을 파일들의 명단을 적어놓은 것.
git clone과 git pull의 차이
내 로컬에 서버의 프로젝트가 있을때는 git pull, 아직 아무것도 없을때는 git clone!