https://velog.io/@devzunky/TIL-7%EC%9D%BC%EC%B0%A8-Git-Basic-5-l0k1eiwchm
헷갈리면 들어가서 공부 더 할 정리왕 블로그!
github란 VCS에서 개발자간의 협업을 위해 중앙 서버가 있는데
github는 이러한 중앙서버의 역할.
github를 안쓰면 우리가 직접 서버를 띄우면 되는데 github가 더 싸고 편리한 기능을 제공하니까 github를 사용하는 것이다.
git init = 새로운 git 저장소를 만든다.
git add remote = repository 주소를 넣어준다.
git remote -v = 지금 repository가 어디인지 알려준다.
2-1. local repository
내 pc에 파일이 저장되는 개인 전용 저장소
평소에는 본인의 pc의 local repository에서 작업하다가 소스코드를 공개하고 싶을 때, Remote repository에 업로드 한다.=push
Remote repository에서 다른 사람의 소스코드를 자신의 local repository로 가져올 수 있다=pull
2-2 local repository만들기
1. 새로운 저장소 git init
2. 이미 존재하는 remote repository를 local repository로 복사해오는 방법 git clone
1번 해보기
$ mkdir first-directory
$ cd first-directory
/first-directory $ git init
이 3줄을 마치면 first-directory에 .git
이라는 디렉토리가 생성된다.
local repository하나 만든거다.
2번 해보기
$ git clone url 폴더이름
내 pc 저장소 폴더 = work tree
저장소에 업로드(commit)전에 index라는 공간에 등록 = staging
staging한 파일을 저장소에 업로드하는 것을 commit이라고 표현한다.
work tree--(staging)--->Index--(commit)-->repository
staging이 필요한 이유= 수정한 파일 10개 중에 7개만 저장소에 업로드 하고 싶을 때 7개만 선택하는 작업이기 때문
staging 명령어
$ git add 파일이름
를 이용해서 파일을 Index에 등록
여기에서 깨달은 것!!!
git add .
->현재 수정된 모든 파일들을 Index에 등록하겠다.
git add . 경로/파일이름
->작성한 파일만 Index에 등록하겠다.
$ git log
를 쓰면
누가 언제 어떤 내용으로 commit했는지 알 수 있다.
git status
->modified
, unmodified
, staged
등 상태를 확인할 수 있다.
우선, 내가 local repository -> remote repository 를 push
누군가의 코드를 remote repository -> local repository 를 pull
프로젝트 다운받을 때, (처음에!!)clone을 통해 모든 코드를 내 컴퓨터로 가지고 온다
clone으로 다운받고 누군가가 수정해서 다시 올렸다. 다른 누군가가 그 최신 코드로 작업을 해야하니까 코드 가지고 오는 것 = pull
같은 라인에서 두 명이 수정 뒤에 올렸을 때 충돌이 일어나는데 이 충돌도 local에서 일어나니까 다른 사람한테 피해가 가진 않는다
local repository만들 때 init을 사용했었는데,
clone을 사용해 local repository를 생성해보자.
$ git clone url cloneTutorial
를 실행하면 현재 폴더에 clone Tutorial이라는 폴더명으로 remote repository가 복제된다.
이렇게 만들어진 branch는 다른 branch들과 Merge하며 다시 새로운 branch로 모을 수 있다.
local에서 merge. 모든 일은 local에서 일어나고 github는 받아주기만 함
따로 branch를 만들어 사용하지 않는 이상 master branch를 사용하게 된다.
checkout
명령어를 사용한다.
그리고 아직 commit하지 않은 변경 내용이 index와 work tree에 남아있는 채로 checkout
하면 그 변경 내용들은 기존 브랜치가 아닌 전환된 branch에서 commit할 수 있다.
이 때, 변경 내용 중에 전환
같은 파일 내에 같은 라인을 건들이게 되면 충돌이 일어나면서 git이 선택권을 준다. 어떤 파일로 덮을 것인지! 선택해서 다시 올려야 한다. 주로 충동한 두 개발자가 만들어서 같이 상의한 뒤 고쳐서 올려야 한다.
이 모든게 local에서 일어난다.
\
내가 master branch에서 처음 들고 왔을 때 master의 상태를 base
라고 함
충돌났을 때 더더욱 조심해야해....
modified면 꼭 staged를 꼭 하고 나서 commit해야한다,
\
-지훈님 세션-
tig 좋아용 q누르면 나갈 수 있다
git branch feature/이름
feature branch 이름 지을 때 camelCase아니고 소문자로... 또는 -이거 붙여서.
git branch 누르면 feature/이름 들 다 나옴. 나올 때 q누르면 됨
전환할 때 git checkout feature/login
누르면 branch가 전환이 된 것이다.
새롭게 가지가 뻗어나와 분리가 된 것이다.
merge시키지 않는 이상 여기의 일이 되는 것이다.
vim abc.js = 파일 만들기
git push -u origin master 하면 다음부터
git add
git commit -m "블라블라"
git push만 누르면 됨
되도록이면 branch에는 branch를 하지는 말고
기능 작업 추가할 때 branch하는게 좋은데..