2가지 종류의 Git repository가 있습니다.
remote repository
local repository
이런식으로 git repository가 2개가 있는데 결국여러 local repository에서 remote repository로 파일을 전송하여 전송된 파일들을 합치는 과정이 git을 이용하여 협업을 진행하게 됩니다.
git clone /로컬/저장소/경로
내 PC에서 작업을 하고 저장소에 올린다고 했는데, 이렇게 작업하는 폴더를 git에서는 Work tree라고 표현합니다. 그리고 저장소에 업로드하기 전에 Index라고 불리는 공간에 등록해줘야합니다. 이를 staging이라고 표현합니다. 그리고 staging한 파일을 저장소에 업로드하는 것을 commit이라고 표현합니다.
Work tree --(staging)--> Index --(commit)--> repository
git add 파일이름
staging을 위한 명령어입니다.
이 명령어를 이용해 파일을 Index에 등록합니다.
그리고 파라미터에 . 을 지정하면 모든 파일을 Index에 등록할 수 있습니다.
git add .
git commit -m "Comment"
git log
git status
Local repository에서 변경된 사항을 Remote repository에 공유하는 것 즉, 업로드하는 것을 Push라고 표현합니다.
반대로 누군가가 Remote repository에 올려놓은 변경내용을 내 Local repository로 가지고 오고 싶을 때, 내 Local에 적용하는 것을 Pull이라고 표현합니다.
git push origin master
(다른 가지를 발행하려면 master를 원하는 가지 이름으로 바꿔주세요.)
만약 기존에 있던 원격 저장소를 복제한 것이 아니라면,
원격 서버의 주소를 git에게 알려줘야 해요.
git remote add origin <원격 서버 주소>
이제 변경 내용을 원격 서버로 발행할 수 있어요.
git pull
이렇게 하면 원격 저장소의 변경 내용이 로컬 작업 디렉토리에
받아지고(fetch), 병합(merge)됩니다.
git merge <가지 이름>
중요한 부분이 항상 성공하는 게 아니라 가끔 충돌(conflicts)이 일어나기도 합니다.
이렇게 충돌이 발생하면, git이 알려주는 파일의 충돌 부분을 여러분이 직접 수정해서 병합이 가능하도록 해야 수정을 해야합니다.
충돌을 해결했다면, 아래 명령으로 git에게 아까의 파일을 병합을 해줍니다.
git add <파일 이름>
branch란 독립적으로 작업을 진행하기 위한 개념입니다. 각각의 branch는 다른 branch의 영향을 받지 않기 때문에, 여러 작업을 동시에 진행할 수 있습니다.
저장소를 처음 만들면, git은 'master'라는 이름의 branch를 만들어 줍니다. 따로 branch를 만들어 사용하지 않는 이상 master branch를 사용하게 됩니다.
그리고 이렇게 만들어진 branch는 다른 branch들과 Merge함으로써, 다시 새로운 하나의 branch로 모을 수 있습니다.