'깃'은 파일관리 시스템이라고 할 수 있다.
주로 협업을 위해서 사용하고, 개발되었다고 볼 수 있다.
일단 나는 협업은 둘 째 치고, 소스코드가 가득 들어있는 컴퓨터를 반납해야 되는 상황이 왔고, 소스코드는 지켜야했다.
배운지가 까마득해서 정리는 안되어있고, 소스코드는 기억이 나지 않지만
깃허브에 소스코드를 올려놓으면 어디서든지 볼 수 있다.
윈도우든 리눅스든 깃과 아주 호환이 잘 되는 것으로 알고 있다.
윈도우는 github destktop을 깔면 무지성으로 편하게 사용할 수 있다.
git에서만 사용되는 여러가지 용어들이 있는데, 항상 새로운 개념들은 활자로 정의해놓은 글을 읽어봤자 이해되지 않는다.
시각적으로 이해한 바를 설명해보겠다.
우선 git을 받게되면 원하는 디렉토리에서 아래 명령어를 실행한다.
$ git init
위 명령어를 실행하면 .git
이라는 하위 디렉토리가 생성되는데 이 하위 디렉토리에서 git init
을 실행한 디렉토리의 파일 버전을 관리할 수 있는 뼈대가 설치된다.
이제 .git
이라는 하위 디렉토리가 있는 디렉토리를 working repository
라고 한다.
working repository
의 변경사항을 보고하는 절차가 필요하다.
보고하기 전에 staging
영역 이라는 것이 존재하는데, 일단 내 눈에는 보이지 않는다. 어디에 존재하는지는 모르겠다. 보고할 변경 파일들을 add
명령어로 정한다. add
로 선정된 파일들은 보고할 준비가 되어 staging
영역으로 올라간다.
$ git add .
$ git add *.c
위와 같은 방식으로 add
할 수 있다. 첫 번째 방식은 모든 파일을 전부 다 add
하는 것이다. 굳이 보고할 파일을 선별할 필요 없다면 무지성으로 첫 번째 명령어를 실행하면 된다. 두 번째와 같이 원하는 파일만 보고할 수도 있다.
$ git status
위 명령어로 어떤 파일들이 add
되었는지 확인할 수 있다. add
된 파일들은 초록색으로, 그 외는 빨간색으로 뜬다.
이제 보고할 대상들이 정해졌으니 staging
영역에 있는 보고할 사안들을 보고해야한다. 이 보고를 commit
이라고 한다.
commit
은 아래와 같은 명령어로 실행할 수 있다.
$ git commit -m "upload"
-m
이라는 옵션은 메세지를 의미한다. 안 적게되면 commit
이 되지 않았다. 메세지는 나중에 github에 업로드 되면, 각 파일이름 옆에 표시된다.
근데 대체 어디로 보고하는건가? local repository
로 보고하는 것이다.
다음과 같이 정리할 수 있다.
1. working directory
에서 staging
으로 add
2. staging
에서 local repository
로 commit
이제 내 컴퓨터에만 있는 local repository
를 깃허브에 있는 저장소로 업로드 해야한다.
깃허브의 저장소를 remote repository
라고 한다.
우선 깃허브에 가서 remote repository
를 만들어야 한다. 만들 때, Add a README file
이라는 옵션이 있는데, 선택하게 되면, 자동으로 README.md 파일이 만들어지는데, branch
라는 것의 default명으로 main
이 된다. 일단 내가 하는 방식에서는 나중에 문제가 생기므로 옵션을 체크하지 않는다.
만들게되면 url이 생기는데, 다음과 같은 형식이다.
https://github.com/{닉네임}/{repository 이름}.git
이제 다음 명령어로 local repository
와 remote repository
를 연결해준다.
alias
는 보통 origin
으로 많이 쓴다.
$ git remote add {url alias} {remote repository url}
이제 local repository
에서 remote repository
로 commit
된 변경사항들을 업로드 한다. 이 업로드를 push
라고 한다.
$ git push {remote repository url} {branch name}
remote repository url
이 길어서 아까전에 alias
로 설정한 이름을 써주면 간편하다. branch
라는 개념이 등장한다.
branch
는 '나뭇가지'라는 의미를 갖고 있다. 의미 그대로의 기능을 하는 녀석이다. 협업 시에 주 프로젝트가 있고 나중에 합쳐지게 될 곁가지들이 있을거다. 개발 중인 곁가지를 주 프로젝트에 합치면 문제가 생길 여지가 많기 때문에 branch
라는 것을 사용한다고 한다. 아직 제대로 사용해본 적도 없고, 파일을 올리는 현재의 상황에서는 크게 신경 쓸 필요가 없다.
다만, 알아둬야 하는 것은 주 branch
의 이름이 local repository
에서는 master
가 default이다.
$ git branch
위 명령어로 현재 branch
이름을 확인할 수 있다.
어쨌든 위와 같은 이유로 일반적으로 push
명령어는 아래와 같다.
$ git push origin master