ubuntu 리눅스에 git 서버 설치하고 사용하기.

ubuntu 18.04 LTS Git 서버 만들고 사용하기.

git 서버: ubuntu 18.04에 설치
윈도우PC: windows 버전 설치는 생략하였음.

1. git-core 설치

snowfox@fox:~$ sudo apt-get install git-core

2. git user 생성

ssnowfox@fox:~$ sudo useradd -d /home/git -m -c "MyGit" -s /bin/bash git
snowfox@fox:~$ sudo passwd git
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
snowfox@fox:~$

3. git global 설정

git@fox:~$ git config --global user.name
git@fox:~$ git config --global user.name "snowfox"
git@fox:~$ git config --global user.email "snowffox@example.com"
git@fox:~$ git config -l
user.name=snowfox
user.email=snowffox@example.com

4. git repository 생성

snowfox@fox:~$ su - git
Password:
git@fox:~$
git@fox:~$ mkdir Repo

5. 프로젝트 생성
3에서 만든 저장소(repository)에 .git으로 끝나는 디렉토리를 만든다. 그리고 만든 디렉토리로 이동하여 프로젝트를 위한 git 저장소를 초기화한다.

git@fox:~/Repo$ mkdir foxx.git
git@fox:~/Repo$ cd foxx.git
git@fox:~/Repo/foxx.git$ git init --bare
Initialized empty Git repository in /home/git/Repo/foxx.git/

ls로 확인해보면 아래와 같은 디렉토리와 화일들이 생성된 것을 볼 수 있다.

git@fox:~/Repo/foxx.git$ ls -l
total 32
drwxrwxr-x 2 git git 4096 Aug 27 01:09 branches
-rw-rw-r-- 1 git git   66 Aug 27 01:09 config
-rw-rw-r-- 1 git git   73 Aug 27 01:09 description
-rw-rw-r-- 1 git git   23 Aug 27 01:09 HEAD
drwxrwxr-x 2 git git 4096 Aug 27 01:09 hooks
drwxrwxr-x 2 git git 4096 Aug 27 01:09 info
drwxrwxr-x 4 git git 4096 Aug 27 01:09 objects
drwxrwxr-x 4 git git 4096 Aug 27 01:09 refs

6. git을 이용하기(윈도우)
여기에서는 d:\Git 디렉토리 밑에 위 서버이 프로젝트를 복사한다. dir로 확인해보면, foxx 디텍토리가 만들어진 것을 볼 수있다.

D:\Git>git clone ssh://git@192.168.0.6:/home/git/Repo/foxx.git
Cloning into 'foxx'...
git@192.168.0.6's password:
warning: You appear to have cloned an empty repository.

D:\Git>dir
 D 드라이브의 볼륨: 로컬 디스크
 볼륨 일련 번호: 5821-F136

 D:\Git 디렉터리

2018-08-27 월  오후 12:58    <DIR>          .
2018-08-27 월  오후 12:58    <DIR>          ..
2018-08-27 월  오후 12:58    <DIR>          foxx
               0개 파일                   0 바이트
               3개 디렉터리  427,610,558,464 바이트 남음

* 화일 생성후 push 하기
윈도우PC 에서 git 프로젝트 디렉토리로 이동후에 readme.txt 화일을 만든다.

D:\Git>cd foxx

D:\Git\foxx>dir/w
 D 드라이브의 볼륨: 로컬 디스크
 볼륨 일련 번호: 5821-F136

 D:\Git\foxx 디렉터리

[.]          [..]         readme.txt
               1개 파일                  39 바이트
               2개 디렉터리  427,610,558,464 바이트 남음

D:\Git\foxx>type readme.txt
my 1'st git project

만든화일을 git 인덱스 등록

D:\Git\foxx>git add *

변경내용을 확정(commit)하려고 하는데, 아래처럼 global 설정오류가 발생한다.

D:\Git\foxx>git commit -m "first git test..."

*** Please tell me who you are.

Run

  git config --global user.email "you@example.com"
  git config --global user.name "Your Name"

to set your account's default identity.
Omit --global to set the identity only in this repository.


fatal: unable to auto-detect email address

global 설정을 해준다.

D:\Git\foxx>git config --global user.email "snowffox@example.com"

D:\Git\foxx>git config --global user.name "snowfox"

서버로 변경사항 push 했을때 아래 오류 발생

D:\Git\foxx>git push origin master
error: src refspec master does not match any.
error: failed to push some refs to 'ssh://git@192.168.0.6:/home/git/Repo/foxx.git'

다시 아래 과정을 실행했다.

D:\Git\foxx>git add readme.txt

D:\Git\foxx>git commit -m "first git"
[master (root-commit) 798dcbf] first git
 1 file changed, 4 insertions(+)
 create mode 100644 readme.txt

D:\Git\foxx>git commit -m "first git file"
On branch master
Your branch is based on 'origin/master', but the upstream is gone.
  (use "git branch --unset-upstream" to fixup)

nothing to commit, working tree clean

D:\Git\foxx>git branch --unset-upstream
D:\Git\foxx>git push
fatal: The current branch master has no upstream branch.
To push the current branch and set the remote as upstream, use

    git push --set-upstream origin master


D:\Git\foxx>git push --set-upstream origin master
git@192.168.0.6's password:
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 242 bytes | 60.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To ssh://192.168.0.6:/home/git/Repo/foxx.git
 * [new branch]      master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.

이제 로컬(윈도우PC)의 프로젝트 디렉토리를 삭제하고, git 서버에서 프로젝트를 가져와본다.

D:\Git>rm -rf foxx

D:\Git>dir
 D 드라이브의 볼륨: 로컬 디스크
 볼륨 일련 번호: 5821-F136

 D:\Git 디렉터리

2018-08-27 월  오후 01:33    <DIR>          .
2018-08-27 월  오후 01:33    <DIR>          ..
               0개 파일                   0 바이트
               2개 디렉터리  427,610,599,424 바이트 남음

D:\Git>


D:\Git>git clone ssh://git@192.168.0.6:/home/git/Repo/foxx.git
Cloning into 'foxx'...
git@192.168.0.6's password:
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.

D:\Git>dir
 D 드라이브의 볼륨: 로컬 디스크
 볼륨 일련 번호: 5821-F136

 D:\Git 디렉터리

2018-08-27 월  오후 01:34    <DIR>          .
2018-08-27 월  오후 01:34    <DIR>          ..
2018-08-27 월  오후 01:34    <DIR>          foxx
               0개 파일                   0 바이트
               3개 디렉터리  427,610,550,272 바이트 남음
D:\Git>cd foxx

D:\Git\foxx>dir
 D 드라이브의 볼륨: 로컬 디스크
 볼륨 일련 번호: 5821-F136

 D:\Git\foxx 디렉터리

2018-08-27 월  오후 01:34    <DIR>          .
2018-08-27 월  오후 01:34    <DIR>          ..
2018-08-27 월  오후 01:34                39 readme.txt
               1개 파일                  39 바이트
               2개 디렉터리  427,610,550,272 바이트 남음

D:\Git\foxx>type readme.txt
my 1'st git project


just for test.
D:\Git\foxx>


D:\Git>

7. git 이용하기(Linux)
Linux 계정에서 이미 있는 디렉토리를 git 서버에 등록하고 이용하기
/home/snowfox/foxx 디레토리에 Django 프로젝트있음.

* git 저장소에 프로젝트 생성

git@fox:~$ mkdir -p Repo/djangoblog.git
git@fox:~/Repo$ cd Repo/djangoblog.git/
git@fox:~/Repo/djangoblog.git$ git init --bare
Initialized empty Git repository in /home/git/Repo/djangoblog.git/

* 기존 프로젝트(django blog 학습용)디렉토리에서(userID: snowfox)

snowfox@fox:~/foxx$ pwd
/home/snowfox/foxx
snowfox@fox:~/foxx$ git init
Initialized empty Git repository in /home/snowfox/foxx/.git/
snowfox@fox:~/foxx$ git add .
snowfox@fox:~/foxx$ git commit -m "django test project blog"

*** Please tell me who you are.

Run

  git config --global user.email "you@example.com"
  git config --global user.name "Your Name"

to set your account's default identity.
Omit --global to set the identity only in this repository.

fatal: unable to auto-detect email address (got 'snowfox@fox.(none)')

마친가지로 git 글로벌 설정을 해준다.

snowfox@fox:~/foxx$ git config --global user.email "snowffox@example.com"
snowfox@fox:~/foxx$ git config --global user.name "snowfox"

다시 commit 한다.

snowfox@fox:~/foxx$ git commit -m "Django test project - blog"
...
 create mode 120000 lib/python3.6/types.py
 create mode 120000 lib/python3.6/warnings.py
 create mode 120000 lib/python3.6/weakref.py
 create mode 100755 manage.py
 create mode 100644 pip-selfcheck.json

* 서버에 push 한다.

snowfox@fox:~/foxx$ git push --set-upstream ssh://git@192.168.0.6:/home/git/Repo/djangoblog.git master
The authenticity of host '192.168.0.6 (192.168.0.6)' can't be established.
ECDSA key fingerprint is SHA256:8Ph0P9LOsL46vf/ROwcNKsFXRzmctb6g207p6y6/2ls.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.6' (ECDSA) to the list of known hosts.
git@192.168.0.6's password:
Counting objects: 8121, done.
Compressing objects: 100% (4911/4911), done.
Writing objects: 100% (8121/8121), 12.21 MiB | 9.73 MiB/s, done.
Total 8121 (delta 2125), reused 8121 (delta 2125)
remote: Resolving deltas: 100% (2125/2125), done.
To ssh://192.168.0.6:/home/git/Repo/djangoblog.git
 * [new branch]      master -> master
Branch 'master' set up to track remote branch 'master' from 'ssh://git@192.168.0.6:/home/git/Repo/djangoblog.git'.

윈도우PC에서 등록된 djangoblog 프로젝트를 복사해 본다.

D:\Git>git clone ssh://git@192.168.0.6:/home/git/Repo/djangotest.git
Cloning into 'djangotest'...
git@192.168.0.6's password:
fatal: '/home/git/Repo/djangotest.git' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

D:\Git>git clone ssh://git@192.168.0.6:/home/git/Repo/djangoblog.git
Cloning into 'djangoblog'...
git@192.168.0.6's password:
remote: Counting objects: 8121, done.
remote: Compressing objects: 100% (4911/4911), done.
remote: Total 8121 (delta 2125), reused 8121 (delta 2125)
Receiving objects: 100% (8121/8121), 12.21 MiB | 15.23 MiB/s, done.
Resolving deltas: 100% (2125/2125), done.
Checking out files: 100% (5935/5935), done.

D:\Git>

잘 된다!

참고문서:
https://rogerdudler.github.io/git-guide/index.ko.html
https://backlog.com/git-tutorial/kr/intro/intro4_2.html

답글 남기기

Your email address will not be published.