반응형

Git을 대충 사용 할 줄은 알았지만, Git의 근본 원리부터 완벽히 알지는 못하여서

공부를 하며 알게된 점에 대해 포스팅을 작성하고자 한다.

 

아직 정리하여 글을 작성하지 못하여서

일단 정보를 최대한 기록한 뒤에 나중에 다른 사람도 편하게 읽을 수 있도록 순서를 재배치할 예정이다.

 

 

1. git init

 

폴더를 만들고 git init을 통해 git을 생성하였다.

파일 디렉토리는 리눅스 심볼릭 링크를 통해 생성하였다.

 

 

윈도우에서 폴더에 가보면 .git 폴더가 생성되어있고 안에 위의 내용이 들어있다.

 

 

이제 다시 원래 폴더로 돌아가서 a.txt를 만들고 저장하자.

 

 

 

2. git status

 

git status 는 현재 상황을 알려준다.

현재 master 브랜치에 있으며 별다른 커밋은 없고, 파일 중 a.txt 가 Untracked 상태이다.

 

따라서 이 파일을 commit 하기 위에 Stage 해주겠다.

 

3. git add

 

gid add a.txt

 

를 통해 파일을 Stage 하였고 다시 한번 git status 를 통해 상태를 확인해보니

아직 commit은 없지만  파일이 commit 되기 위해 기다리고 있다.

 

git add . 를 하면 해당 위치의 모든 파일이 add 된다. (git ignore 가 없을 경우)

 

 

작업 중에는 .git 폴더를 볼 일이 없지만, 공부를 위해 .git 폴더를 들어가보면

objects의 32 폴더 안에 8397c3 ~~ 의 파일이 생겼다.

 

이는 우리가 올린 a.txt가 328397c3 ~~의 SHA1 해시값을 가지기 때문이다.

 

앞의 두 자리는 폴더로, 뒤의 내용은 파일명으로 해서 내용을 가지게 된다.

 

 

4. git commit

 

git commit -m "add a.txt"

커밋을 추가하였고 메세지는 "add a.txt" 이다.

 

 

폴더 11과 폴더 95가 생겼다.

하나는 새로운 커밋을 나타내는 object 이고, 하나는 그 커밋이 포함하고 있는 파일들을 나타내는 tree object 이다.

 

 

진행중인 master branch를 켜보면 959c89....를 가지고 있으니 95 폴더에 있는 것이 commit일 것이다. 

 

 

5. git push

 

이제 원격 저장소에 푸쉬를 해보자. 원격저장소는 깃허브에 하나 만들어 두었다.

origin 이라는 이름에 깃허브 repo 링크를 연결시키기 위해

 

git remote add origin https://~~

 

를 사용하였다. 이후 git push로 push를 하려고 하자 branch 를 설정하지 않았다고 한다.

 

우선 git push origin master 로 branch 를 직접 지정해서 push 하였다.

깃허브의 아이디와 비밀번호를 입력하니 push가 완료되었다.

 

a.txt가 push 된 모습

 

 

이어서 git push 만으로 원격 저장소에 push 되도록 해보자.

로컬 branch 와 원격 branch 를 연결하는 방법에는 여러가지가 있다.

로컬 branch 를 생성할 때 부터 원격 저장소에서 checkout -b 를 이용하거나,

push -u 를 사용할 수도 있다.

위에서 사용 한 방법은 그냥 연결만 해주는 것이다.

 

git branch --set-upstream-to origin/master

 

를 사용 하면 연결이 된다.

이후 git push 하면 바로 원격 저장소에 올라가는 모습을 볼 수 있다. (everything up-to-date 지만)

 

이 관계를 삭제하려면 git branch --unset-upstream 하면 된다.

 

git branch -a 를 이용하여 모든 branch를 볼 수 있고,

git branch -r 을 이용하면 내 로컬 저장소에 있는 원격 브랜치만 볼 수 있다.

반응형