본문 바로가기
Git

Git의 원리] 6. git remote, origin, push

by Fastlane 2022. 9. 7.
728x90
반응형
$ git init
Initialized empty Git repository in C:/Project/git_test/.git/

git 초기화를 하면 생성되는 .git파일의 config파일을 확인해보자. 

[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true

f1.txt파일을 생성해서 저장 commit하고, git remote add [원격저장소] [remote repository url] 명령어를 통해서 원격저장소를 연결하고 원격저장소 이름과, url을 지정한다. 

$ vim f1.txt

$ git add f1.txt
warning: LF will be replaced by CRLF in f1.txt.
The file will have its original line endings in your working directory

$ git commit -m 1
[master (root-commit) b3e2e28] 1
 1 file changed, 1 insertion(+)
 create mode 100644 f1.txt

$ git remote add origin https://github.com/hello/repo.git

이때 config 파일을 확인해보자. origin이라는 remote에 대한 정보가 추가되었다. 

[remote "origin"]
url = https://github.com/hello/repo.git
fetch = +refs/heads/*:refs/remotes/origin/*

local repository commit을 remote repository로 push해보자. 

# origin master branch와 연결하여 push한다. 
$ git push --set-upstream origin master
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 197 bytes | 49.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/BigExecution/repo.git
 * [new branch]      master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.

이때 config 파일을 확인해보자. master branch에 대한 정보가 추가되었다. 

master branch는 origin에 연결된다. 

[branch "master"]
remote = origin
merge = refs/heads/master

그리고 refs 밑에 remotes/origin/master 파일이 추가된다. 

내용은 origin으로 push한 commit hash id가 들어있다.

refs 밑에 head/master 파일에는 local repository의 마지막 commit hash id가 들어있다. 

# 지역저장소 master branch의 commit과 원격저장소 origin의 master branch의 commit이 같다. 
$ git log --decorate --graph
* commit b3e2e2895ac5db3896a1d4fbbedfdd23ded778b8 (HEAD -> master, origin/master)
  Author: 
  Date:   Wed Sep 7 16:20:11 2022 +0900

      1
# f1.txt 파일을 수정해서 commit을 2개 추가해보자. 
$ vim f1.txt

$ git commit -am 2
warning: LF will be replaced by CRLF in f1.txt.
The file will have its original line endings in your working directory
[master 030889f] 2
 1 file changed, 1 insertion(+)

$ vim f1.txt

$ git commit -am 3
warning: LF will be replaced by CRLF in f1.txt.
The file will have its original line endings in your working directory
[master 61c5cf1] 3
 1 file changed, 1 insertion(+)

# 지역저장소 master는 2번의 commit을 추가로 했지만 push하지 않았기 때문에 
# origin master가 가리키는 commit과 다르다. 
$ git log --decorate --graph
* commit 61c5cf1c8345f236f5c2a5e0f2c31ad293295fd6 (HEAD -> master)
| Author: 
| Date:   Wed Sep 7 17:04:41 2022 +0900
|
|     3
|
* commit 030889f87fe150baa4a2b79cf5c900ab4a07e597
| Author: 
| Date:   Wed Sep 7 17:04:13 2022 +0900
|
|     2
|
* commit b3e2e2895ac5db3896a1d4fbbedfdd23ded778b8 (origin/master)
  Author: 
  Date:   Wed Sep 7 16:20:11 2022 +0900

      1

아래 두 파일의 내용이 달라진다. 

refs/head/master : 61c5cf1c8345f236f5c2a5e0f2c31ad293295fd6 

refs/remotes/origin/master : b3e2e2895ac5db3896a1d4fbbedfdd23ded778b8

$ git push
Enumerating objects: 8, done.
Counting objects: 100% (8/8), done.
Delta compression using up to 12 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (6/6), 425 bytes | 85.00 KiB/s, done.
Total 6 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/hello/repo.git
   b3e2e28..61c5cf1  master -> master

$ git log --decorate --graph
* commit 61c5cf1c8345f236f5c2a5e0f2c31ad293295fd6 (HEAD -> master, origin/master)
| Author: 
| Date:   Wed Sep 7 17:04:41 2022 +0900
|
|     3
|
* commit 030889f87fe150baa4a2b79cf5c900ab4a07e597
| Author: 
| Date:   Wed Sep 7 17:04:13 2022 +0900
|
|     2
|
* commit b3e2e2895ac5db3896a1d4fbbedfdd23ded778b8
  Author: 
  Date:   Wed Sep 7 16:20:11 2022 +0900

      1
728x90
반응형

댓글