VCS (Version Control System) == SCM (Source Code Management)
Local(작업 중인 컴퓨터)과 Remote(Github)으로 나뉜다.
Git과 Github은 엄연히 다르다!!
git clone “원격 저장소(github repository) 주소” → 만들어진 원격 저장소를 로컬로 가져온다.
git clone을 실행하여 저장소가 됐다면, 다음과 같이 실행된다.
README.md : 프로젝트를 전반적으로 설명하는 대문 역할.
git add를 통해 작업 단위 구분을 잘해줘야 한다. → A 파일 수정 내용과, B 파일 수정 내용을 각각 다른 commit으로 만든다.
어떤 내용의 작업을 했는지 알아보기 쉽도록 commit 메시지를 작성한다.
git이 특정 파일/폴더를 추적하지 않도록 명시하기 위해 작성한다.
gitignore.io 에서 본인이 사용하는 개발 환경, 프레임워크 등을 추가한 뒤에 파일을 생성하면 본인에게 맞는 gitignore 파일을 만들어준다.
→ 각 OS(Windows or Mac)의 썸네일 파일이 레포지터리에 올라가는 것을 방지한다.
github에서 repository를 생성할 때 template 추가를 통해 gitignore파일을 생성할 수도 있지만, gitignore.io에서 만드는 것을 추천
라이센스는 리포지터리를 생성할 때 추가할 수 있다.
이미 생성한 리포지터리에 대한 라이센스는 리포지터리 세팅에 들어가서 추가 가능
파일의 내용을 변경하게 되면 git이 이를 탐지하지만, 디렉토리는 객체가 아니라 개념, path로서만 존재하기 때문에 디렉토리를 생성하고 git status 명령어를 사용해봐도 변경 내용이 탐지되지 않는다.
git status -uall : Untracked files에 폴더명까지만 출력하지 않고, 폴더 내부의 어떤 파일이 변경되었는지 출력한다.
분기점을 생성하여 독립적으로 코드를 변경할 수 있도록 도와주는 모델
commit이 시간적인 개념이라면, branch는 공간의 개념이다.
→ commit을 통해 과거의 코드를 볼 수 있었다면, branch를 통해 같은 시간에 다른 공간에서 코드를 작성할 수 있다.
→ 기존의 코드, 타인의 코드에 영향을 미치지 않음으로써 안전하게 작업할 수 있다.
명령어
git branch lunch : 현재 브랜치로부터 분기해서 lunch 브랜치를 생성한다.
git switch lunch : lunch 브랜치로 이동한다.
두 브랜치의 내용을 합친다.
git merge lunch → 실행한 브랜치(main)에서 lunch 브랜치를 땡겨와서 합친다.
default 브랜치를 밀어내는 개념이 아니라, default 브랜치에서 대상 브랜치를 땡기는 개념이다.
merge를 하고, 그 이후의 작업이 없어서 lunch 브랜치의 생명주기가 끝났다면 브랜치를 삭제한다.
만약, 두 브랜치에서 동시에 작업을 하다가 merge를 한다면? → merge conflict가 일어난다.
원래 merge를 하면 git이 알아서 조립을 해서 합쳐주지만, 같은 부분에 대한 수정이 일어날 경우 git이 판단하지 않고 사용자가 conflict를 해결하도록 한다.
merge conflict 중재 후, 커밋 메시지에 어떻게 중재했는지에 대해 작성한다.
repository - insights - network에 들어가면 누가 어떤 브랜치를 머지했는지에 대한 정보를 확인할 수 있다.
commit을 할 때, -m 플래그를 사용하면 쌍따옴표 안에 커밋 메시지를 작성하게 되는데, 이때 원래 가지게 될 커밋 제목을 잃게 되고, 정보의 부족이 생기면서 혼동의 여지가 생기기 때문에 vim을 통해 작성하는 것을 추천한다.
origin은 원격 저장소를 뜻한다.
git remote 명령어를 입력하면 origin이라고 출력되는 것을 확인할 수 있다.
git remote add cat “원격저장소 주소” 명령어를 사용하여 원격저장소를 등록하면 원격저장소의 이름이 origin이 아닌 cat이 된다.
origin이라는 이름을 사용하는 것은 관습이다. → 일종의 별명일 뿐, 아무 의미 없다.
기존에는 main 브랜치 대신 master 브랜치로 불리고, 쓰여왔지만 미국의 노예 제도를 연상케 하여 main으로 이름이 바뀌었다.
githubstatus.com 에 들어가서 혹시나 github의 서버 상태가 비정상적이진 않은지를 확인한다.
서버가 잘 뻗기 때문에 push가 안 된다면 먼저 확인해보자.