본문 바로가기

소프트웨어관리툴/GIT

git remote 저장소 생성 [WINDOWS]

첫번째로 windows에서 msys를 이용해 git push 를 할 경우 오류가 있어.

아래 설정을 커멘드에서 해주어야한다.


git config --global sendpack.sideband false




그리고

원격저장소는   소스파일과, git파일이 있는 저장소랑은 다른것으로

git init --bare 명령으로 생성해야한다.  우선 원격저장소역할을 할 폴더를 생성한다 폴더이름은 ==>  [이름].git  형식으로 한다.


OpenApiNet.git 이라는 폴더를 생성하고 원격저장소를 생성


jserver@jserver-PC MINGW64 /c/repo/stock
$ mkdir OpenApiNet.git

jserver@jserver-PC MINGW64 /c/repo/stock
$ cd OpenApiNet.git

jserver@jserver-PC MINGW64 /c/repo/stock/OpenApiNet.git
$ git init --bare
Initialized empty Git repository in C:/repo/stock/OpenApiNet.git/

jserver@jserver-PC MINGW64 /c/repo/stock/OpenApiNet.git (BARE:master)
$ ll
total 7
-rw-r--r-- 1 jserver 197121 131 3월  21 00:11 config
-rw-r--r-- 1 jserver 197121  73 3월  21 00:11 description
-rw-r--r-- 1 jserver 197121  23 3월  21 00:11 HEAD
drwxr-xr-x 1 jserver 197121   0 3월  21 00:11 hooks/
drwxr-xr-x 1 jserver 197121   0 3월  21 00:11 info/
drwxr-xr-x 1 jserver 197121   0 3월  21 00:11 objects/
drwxr-xr-x 1 jserver 197121   0 3월  21 00:11 refs/

jserver@jserver-PC MINGW64 /c/repo/stock/OpenApiNet.git (BARE:master)


자 그리고 git protocol로 데이터를 읽고 쓸수있도록  git protocol을 활성화한다.

jserver@jserver-PC MINGW64 /c/repo/stock
$ git daemon --verbose --export-all --enable=receive-pack --informative-errors
[3708] Ready to rumble


자이제 프로젝트 폴더 OpenApiNet 폴더를 만들고 READEME.md라는 파일을 만들고 커밋한다.



jserver@jserver-PC MINGW64 /c/repo/stock
$ mkdir OpenApiNet

jserver@jserver-PC MINGW64 /c/repo/stock
$ cd OpenApiNet

jserver@jserver-PC MINGW64 /c/repo/stock/OpenApiNet
$ git init
Initialized empty Git repository in C:/repo/stock/OpenApiNet/.git/

jserver@jserver-PC MINGW64 /c/repo/stock/OpenApiNet (master)
$ touch READEME.md

jserver@jserver-PC MINGW64 /c/repo/stock/OpenApiNet (master)
$ git add .

jserver@jserver-PC MINGW64 /c/repo/stock/OpenApiNet (master)
$ git commit -m "test"
[master (root-commit) 8121797] test
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 READEME.md


이제 git ls-remote 명령으로 git://192.168.0.50/repo/stock/OpenApiNet.git 을 살펴본다.

git ls-remote 명령은 git 저장소가 있는지 확인할 수 있다.

jserver@jserver-PC MINGW64 /c/repo/stock/OpenApiNet (master)
$ git remote add origin git://192.168.0.50/repo/stock/OpenApiNet.git

jserver@jserver-PC MINGW64 /c/repo/stock/OpenApiNet (master)
$ git push origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 208 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git://192.168.0.50/repo/stock/OpenApiNet.git
 * [new branch]      master -> master

jserver@jserver-PC MINGW64 /c/repo/stock/OpenApiNet (master)
$ git ls-remote git://192.168.0.50/repo/stock/OpenApiNet.git
812179726bc84a8e1c0268cc864abc48654041bf        HEAD
812179726bc84a8e1c0268cc864abc48654041bf        refs/heads/master


origin은 저장소 이름이고  master는 브랜치 이름이다. 디폴트로 저렇게 된다.

origin 위에서 이름을 다른것으로 바꿀수있다.



임의의 폴더를 하나 만들어서 위 저장소에 있는 파일을 가져와 본다.

jserver@jserver-PC MINGW64 /c/repo/stock
$ mkdir test
jserver@jserver-PC MINGW64 /c/repo/stock
$ cd test
jserver@jserver-PC MINGW64 /c/repo/stock/test
$ git clone git://192.168.0.50/repo/stock/OpenApiNet.git
Cloning into 'OpenApiNet'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.
Checking connectivity... done.
jserver@jserver-PC MINGW64 /c/repo/stock/test
$ ll
total 0
drwxr-xr-x 1 jserver 197121 0 3월  21 00:22 OpenApiNet/

jserver@jserver-PC MINGW64 /c/repo/stock/test
$ cd OpenApiNet

jserver@jserver-PC MINGW64 /c/repo/stock/test/OpenApiNet (master)
$ ll
total 0
-rw-r--r-- 1 jserver 197121 0 3월  21 00:22 READEME.md


이 임의로 만든 test/OpenApiNet 폴더에 임의의 파일 test.txt를 만들고 commit 하고 push 한다.

jserver@jserver-PC MINGW64 /c/repo/stock/test/OpenApiNet (master)
$ touch test.txt

jserver@jserver-PC MINGW64 /c/repo/stock/test/OpenApiNet (master)
$ git add .

jserver@jserver-PC MINGW64 /c/repo/stock/test/OpenApiNet (master)
$ git commit -m "test1"
[master 1ba6381] test1
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 test.txt

jserver@jserver-PC MINGW64 /c/repo/stock/test/OpenApiNet (master)
$ git push
Counting objects: 2, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 241 bytes | 0 bytes/s, done.
Total 2 (delta 0), reused 0 (delta 0)
To git://192.168.0.50/repo/stock/OpenApiNet.git
   8121797..1ba6381  master -> master


초기 OpenApiNet 폴더로 돌아가 위에서 생성한 test.txt가 없는것을 확인하고 git pull 명령을 사용하여 test.txt 파일을 원격저장소에서 받아온다.

jserver@jserver-PC MINGW64 /c/repo/stock
$ cd OpenApiNet

jserver@jserver-PC MINGW64 /c/repo/stock/OpenApiNet (master)
$ ls
READEME.md

jserver@jserver-PC MINGW64 /c/repo/stock/OpenApiNet (master)
$ git pull git://192.168.0.50/repo/stock/OpenApiNet.git
remote: Counting objects: 2, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 2 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (2/2), done.
From git://192.168.0.50/repo/stock/OpenApiNet
 * branch            HEAD       -> FETCH_HEAD
Updating 8121797..1ba6381
Fast-forward
 test.txt | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 test.txt

jserver@jserver-PC MINGW64 /c/repo/stock/OpenApiNet (master)
$ ls
READEME.md  test.txt


정상적으로 받아진 것을 확인할 수 있다.


git remote -v 명령을 사용하여 저장소를 확인해보자.



jserver@jserver-PC MINGW64 /c/repo/stock/OpenApiNet (master)
$ git remote -v
origin  git://192.168.0.50/repo/stock/OpenApiNet.git (fetch)
origin  git://192.168.0.50/repo/stock/OpenApiNet.git (push)



jserver@jserver-PC MINGW64 /c/repo/stock/test/OpenApiNet (master)
$ git remote -v
origin  git://192.168.0.50/repo/stock/OpenApiNet.git (fetch)
origin  git://192.168.0.50/repo/stock/OpenApiNet.git (push)



완료 !!!