앞서 인증서를 만들다 보니 CA인증서 밑에 중간 인증서, 중간 인증서 밑에 서버 인증서... 이렇게 상위 하위 인증서 개념이 있었다. 결론부터 보자면

이렇게 server 밑에 sub.server인증서가 있는 것이다. 어떻게 하위 인증서를 만들 수 있을까?

내가 알고 있는 방법은 2가지 방법이다.

  1. 상위 key pair (여기선 server를 지칭함.) 하위 key pair(sub.server)를 생성하는 방법
  2. 하위 key pair에서 CSR을 발행해서 상위 key pair가 CSR에 sign하는 방법

먼저 상위 key pair(server)에서 바로 key pair를 생성하는 것이다. 

 

아주 간단하게 필요한 정보만 넣으면 만들어 진다. sub.server키를 export하면 .p12 형식으로 만들어서 전달 가능하다.

 

다음 방법은 CSR을 사용하여 sub.server키를 만들어 보자. 이 방법은 전 방법과는 다르게 키를 만드는 주체가 서로 다르다는 것이다. 서로 다른 서버에서 각각 키를 만들었는데 어떻게 sign을 하는지가 포인트다.

서로 다른 JKS 키가 있다. 각각 key pair를 살펴보면 아래와 같이 전혀 상관없는 key pair이다.

이 상태에서 sub.server키에서 CSR을 생성한다. p10형식의 .csr파일이 생성된다.

이제 만들어진 CSR 파일로 server키에서 sign을 하면 된다.

CSR에 대한 응답으로 .p7r파일이 생성된다.

sub.server키에서 import CA reply를 한 결과 위와 같이 설정된다.

캡처가 장황하게 들어가서 길어졌지만 CSR을 간단하게 설명하면 sub키에서 CSR을 생성하면 server키에서 .p7r로 sign을 하고 다시 sub키에서 .p7r를 import 하면 된다.

openssl script로 뭐가 뭐지? 하며 정리가 안되던 차에 keystore explorer로 눈에 보이게 캡처를 하나하나 떠서 만들어 정리해봤다. 혹시라도 헷갈리시는 분은 이렇게 정리하고 script를 다시 보면 이해가 가지 않을까 싶다.

docker remote API는 local PC에 docker가 설치 되어 있지 않더라고 외부 서버의 docker를 사용하는 방법입니다.

TCP 소켓을 이용한 remote API

 

hmpark2@SVC-Build:/lib/systemd/system$ sudo vi docker.service 

[sudo] hmpark2의 암호: 

hmpark2@SVC-Build:/lib/systemd/system$ sudo service docker restart

Warning: The unit file, source configuration file or drop-ins of docker.service changed on disk. Run 'systemctl daemon-reload' to reload units.

hmpark2@SVC-Build:/lib/systemd/system$ systemctl daemon-reload

hmpark2@SVC-Build:/lib/systemd/system$ 

 

위 첨부 그림중 빨간색 칸의 내용을 추가 하였고 2376port가 동작하는 것을 아래와 같이 확인 하였습니다.

docker remote API 호출

이제는 gradle을 이용해서 remote API로 원격빌드를 해보자. 다음 gradle plugin을 사용할 예정이다.

https://github.com/bmuschko/gradle-docker-plugin

 

bmuschko/gradle-docker-plugin

Gradle plugin for managing Docker images and containers. - bmuschko/gradle-docker-plugin

github.com

-이미지 출처 : https://m.blog.naver.com/alice_k106/220234130166

 

8. [Docker] Docker Remote API - 1. 시작하기

본 포스팅은 Java를 이용한 Docker Remote API를 사용할 수 있도록 도와주는 가이드라인이며, 본인이...

blog.naver.com

내용출처http://www.heidilux.com/2014/02/setup-git-server-synology-nas/

 

DSM 5.0-4458 Update 2 에서 테스트 하였다.

 

1. 제어판 -> 터미널 및 SNMP 메뉴에서 SSH 서비스 활성화를 체크 하고 적용 버튼을 누른다.

 

2. 패키지 센터에서 Git Server 를 설치 한다.

 

3. git 용 사용자를 만든다. (디렉토리, 응용프로그램에 관한 어떤 권한도 주지 않아도 된다.)

 

4. 제어판 -> 사용자 메뉴에서 사용자 홈 서비스를 활성화 한다.




 

5. 메인메뉴 -> git server 에서 git 용 사용자 접근허용에 체크 하고 적용 버튼을 누른다.

 


 

6. ssh 로 접속 한다. (root)

 

7. git 사용자의 홈디렉토리에 git repository 를 생성 하고 접근 권한을 변경 한다.

 

 

8. pc 에서 git clone 으로 테스트 한다.

git clone ssh://gituser01@192.168.0.140/var/services/homes/gituser01/my_project.git

 

 

push 를 할 때 혹시 아래와 같은 에러 메세지를 보게 되면 디렉토리의 권한을 다시 한번 확인 한다.


git.exe push --progress  "origin" master:master


Counting objects: 3, done.

Delta compression using up to 4 threads.

Compressing objects: 100% (2/2), done.

Writing objects: 100% (3/3), 217 bytes | 0 bytes/s, done.

Total 3 (delta 0), reused 0 (delta 0)

remote: error: insufficient permission for adding an object to repository database ./objects

remote: fatal: failed to write object

error: unpack failed: unpack-objects abnormal exit

To ssh://gituser01@192.168.0.140/var/services/homes/gituser01/my_project.git

! [remote rejected] master -> master (unpacker error)

error: failed to push some refs to 'ssh://gituser01@192.168.0.140/var/services/homes/gituser01/my_project.git'


git did not exit cleanly (exit code 1) (3563 ms @ 2014-04-22 오전 3:32:54)

 


Git 명령어 정리
카테고리명령어설명
환경설정git config --global --list현재 설정정보 조회 
--global옵션은 전역설정에 대한 옵션이며 현재 프로젝트에만 적용할때는 주지 않음
git config --global user.name "사용자명"사용자명을 등록 (필수)
git config --global user.email "이메일주소"이메일 주소를 등록 (필수)
git config --global color.ui "auto"터미널에 표시되는 메시지에 칼라를 표시해줌
git config --global core.editor "vim"기본 편집 툴을 vim으로 설정함
git config --global merge.tool "vimdiff"머지 툴을 vimdiff로 설정함
기본 명령어git --version현재 git의 버전을 확인
git init현재 디렉토리에 git 저장소를 생성
git add [파일명]git add는 2가지를 하는데 untracked files의 파일들을 git가 추적하도록 하거나 
파일은 수정했지만 아직 스테이징 영역에 올라가지 않은 파일들을 스테이징 영역에 올림 
-i 옵션을 주면 대화형모드가 시작되며 파일의 일부분만 선택해서 스테이징하는 것이 가능
-p 옵션을 사용하면 -i 대화형모드없이 바로 패치모드를 사용할 수 있음
git commit -m "커밋메시지"스테이징 영역에 올라가 있는 파일들을 커밋
-m 은 커밋메시지를 주는 옵션으로 여러 줄의 커밋메시지를 쓸 경우 -m 을 여러개 사용할 수 있음
-a 옵션을 사용하면 스테이징에 올리는 작업과 커밋을 동시에 할 수 있음
(추적되지 않는 파일은 추가하지 않음) 
-m을 사용하지 않을때 -v옵션을 사용하면 편집기에 커밋하려는 변경사항의 다른점을 보여줌
특정파일만 커밋하려면 마지막에 파일명을 추가해주면 됨
git commit -C HEAD -a --amend지정한 커밋의 로그메시지를 다시 사용하여 기존커밋을 수정함
-c를 사용하면 기존메시지를 수정할 수 있는 편집기를 실행해 줌
git status커밋되지 않은 변경사항을 조회
git diff스테이징영역과 현재 작업트리의 차이점을 보여줌 
--cached 옵션을 추가하면 스테이징영역과 저장소의 차이점을 볼 수 있음
git diff HEAD를 입력하면 저장소, 스테이징영역, 작업트리의 차이점을 모두 볼 수 있음 
파라미터로 log와 동일하게 범위를 지정할 수 있으며 
--stat를 추가하면 변경사항에 대한 통계를 볼 수 있음
git mv [파일명] [새파일명]기존에 존재하는 파일을 새파일로 이동함. 변경이력은 그대로 유지
git checkout -- [파일명]아직 스테이징이나 커밋을 하지 않은 파일의 변경내용을 취소하고 이전 커밋상태로 돌림
svn에서 revert와 동일
Branch와 Taggit branch현재 존재하는 브랜치를 조회.
-r 옵션을 사용하면 원격저장소의 브랜치를 확인할 수 있음
git branch [브랜치명B] [브랜치명A]브랜치명A에서 새로운 브랜치 브랜치명B를 만듬
(git에서 기본 브랜치는 master라는 이름을 사용)
git branch [브랜치명]브랜치명의 새로운 브랜치를 만듬
(체크아웃은 하지 않음)
git branch -d [브랜치명]브랜치를 삭제
git branch -m [존재하는브랜치명] [새로운브랜치명]존재하는 브랜치를 새로운브랜치로 변경함
이미 존재하는 브랜치명이 있을 경우에는 에러가 나는데 
-M 옵션을 사용하면 이미 있는 브랜치의 경우에도 덮어씀
git tag [태그명] [브랜치명]브랜치명의 현재시점에 태그명으로 된 태그를 붙힘
git tag만 입력하면 현재 존재하는 태그 목록을 볼 수 있음
git checkout [브랜치명/태그명]해당 브랜치나 태그로 작업트리를 변경함
git checkout -b [브랜치명B] [브랜치명A]브랜치명A에서 브랜치명B라는 새로운 브랜치를 만들면서 체크아웃을 함
git rebase [브랜치명]브랜치명의 변경사항을 현재 브랜치에 적용함
git merge [브랜치명]브랜치명의 브랜치를 현재 브랜치로 합침
--squash 옵션을 주면 브랜치명의 모든 커밋을 하나의 커밋으로 만듬
git cherry-pick [커밋명]커밋명의 특정 커밋만을 선택해서 현재 브랜치에 커밋으로 만듬
-n 옵션을 주면 작업트리에 합치지만 커밋은 하지 않기 때문에 여러개의 커밋을 합쳐서 커밋할 수 있음
로그 관리git log커밋로그들을 볼 수 있으며 
-1나 -2같은 옵션을 주어 출력할 커밋로그의 갯수를 지정할 수 있음
--pretty=oneline 옵션을 주면 한줄로 간단히 보여주고 
--pretty=format:"%h %s"처럼 형식을 정해줄 수 있음
-p 옵션을 사용하면 변경된 내용을 같이 보여줌
--since="5 hours" 이나 --before="5 hours"같은 옵션도 사용가능
--graph 옵션을 주면 브랜치 트리를 볼 수 있음
git log [커밋명]해당 커밋명의 로그를 볼 수 있음
커밋명A..커밋명B (마침표2개)와 같이 입력하면 커밋명A이후부터 커밋명B까지의 로그를 볼 수 있음
^은 -1과 동일해서 HEAD^라고 하면 최신바로 이전 커밋이고 
HEAD^^^와 같이 쓸 수 있으며 
HEAD~3을 하면 HEAD의 3개 이전의 커밋을 뜻함
git blame [파일명]갈 줄 앞에 커밋명과 커밋한 사람등의 정보를 볼 수 있음
git blame -L 10,15 [파일명] -L 옵션을 사용하면 10줄부터 15줄로 범위를 지정해서 볼수 있고 
15대신 +5와 같이 사용할 수 있음
숫자의 범위 대신 정규식도 사용이 가능함
git blame -M [파일명] -M 옵션을 사용하면 반복되는 패턴을 찾아서 복사하거나 이동된 내용을 찾아줌
-C -C 옵션을 사용하면 파일간의 복사한 경우를 찾아줌
-C -C는 git log에서도 사용가능하며 내용의 복사를 찾을때는 git log에서 -p옵션을 사용함
git revert [커밋명]기존의 커밋에서 변경한 내용을 취소해서 새로운 커밋을 만듬
-n옵션을 사용하면 바로 커밋하지 않기 때문에 revert를 여러번한 다음에 커밋할 수 있음
(항상 최신의 커밋부터 revert해야 함)
git rebase -i 커밋범위 -i옵션으로 대화형모드로 커밋 순서를 변경하거나 합치는 등의 작업을 할 수 있음
원격저장소git clone [저장소주소] [폴더명]원격저장소를 복제하여 저장소를 생성
폴더명은 생략가능
git fetch원격저장소의 변경사항을 가져와서 원격브랜치를 갱신
git pullgit fetch에서 하는 원격저장소의 변경사항을 가져와서 지역브랜치에 합치는 작업을 한꺼번에 함
파라미터로 풀링할 원격저장소와 반영할 지역브랜치를 줄 수 있음
git push파라미터를 주지 않으면 origin 저장소에 푸싱하며 현재 지역브랜치와 같은 이름의 브랜치에 푸싱함
--dry-run 옵션을 사용하면 푸싱된 변경사항을 확인할 수 있음
로컬에서 tag를 달았을 경우에 기본적으로 푸싱하지 않기 때문에 
git push origin 태그명이나 모든 태그를 올리기 위해서 git push origin --tags를 사용해야 함
git remote add [이름] [저장소주소]새로운 원격 저장소를 추가함
git remote추가한 원격 저장소의 목록을 확인할 수 있음
git remote show [이름]해당 원격 저장소의 정보를 볼 수 있음
git remote rm [이름]원격저장소를 제거
서브모듈git submodule연관된 하위모듈을 확인할 수 있음
git submodule add [저장소주소] [서브모듈경로]새로운 하위모듈을 해당경로에 추가
추가만하고 초기화는 하지 않으며 커밋 해쉬앞에 마이나스(-)표시가 나타남
git submodule init [서브모듈경로]서브모듈을 초기화 함
git submodule update [서브모듈경로]서브모듈의 변경사하아을 적용함
(저장소의 최신커밋을 추적하지 않음)
기타 명령어git archive --format=tar
 --prefix=폴더명/ [브랜치혹은태그] | gzip > 파일명.tar.gz
해당 브랜치나 태그를 압축파일로 만듬
--prefix를 주면 압축파일이 해당폴더안에 생성되도록 할 수 있음
git archive --format=zip
 --prefix=폴더명/ [브랜치혹은태그] > 파일명.zip
git mergetool설정에 merge.tool의 값에 있는 머지툴을 찾아서 실행
git gc저장소의 로그를 최적화 함
로그가 변경되지는 않고 저장하는 방식만 최적화 함
--aggressive 옵션을 주면 더 자세하게 최적화 함
git rev-parse --show-toplevelgit 저장소내에서 입력하면 루트디렉토리를 알려줌


- 출처 : http://blog.outsider.ne.kr/572 

본 포스팅은 이클립스 juno 버전 , jdk6 버전에서 실행하였습니다.



1. 이클립스에서 git를 사용하기 위해선 플러그인을 설치해줘야 합니다.

메뉴 -> Help ->Install New Software.. 클릭





2. Add 버튼 -> 사이트링크 추가 (Name : egit  / Location : http://www.jgit.org/updates  -> ok 버튼을 눌러줍니다.




3. 해당 주소에서 다운받을수 있는 플러그인이 검색됩니다. 모두 설치하셔도 되지만 Eclipse Egit, Elipse JGit, Elipse JGit Command Line Interface 만 클릭하여 Next 버튼을 눌러줍니다. (완료될때까지 눌러주면 잘 설치됩니다.)





4. 이제 글4번까지 올렸었던 github.com/uiandwe 의 소스를 다운받는것을 해보겠습니다.

메뉴 File -> Import 를 클릭해줍니다.




5. 3번까지 정상적으로 설치가 완료 되었다면 메뉴리스트에 git가 나오게 됩니다. Git -> Projects from Git 를 클릭하고 Next 를 눌러줍니다.




6. 로컬에서 받아올것인지, 인터넷으로 받아올것인지를 고를수 있습니다. 

github.com에서 받아와야 하므로 URI를 클릭하고 Next를 클릭합니다.



7. 받아올 URI를 지정해 줘야 합니다. 저의 경우는 https://github.com/uiandwe/git_test.git 입니다. URI 칸에 해당하는 주소를 넣어주면 나머지는 자동으로 채워집니다. Next 버튼을 눌러줍니다.



8. 해당 URI에 속해 있는 Branch 를 가져옵니다. 저의 경우 생성한 브랜치가 master 하나 이므로 하나만 뜹니다. (여러개의 경우엔 브랜치별로 다운받을수 있습니다.)




9. 로컬에 저장소를 어디에 만들것인지를 물어보는 화면입니다.

    적당한곳의 디렉토리를 지정하고 Next를 눌러줍니다.




10. git콜솔에서도 clone 명령어로 가져오듯이 마찬가지로 cloning 중입니다. 프로젝트의 크기가 크면 상당한 시간이 소요될수 있습니다.




11. 이클립스의 프로젝트를 어떻게 생성할것인지를 물어보는 화면입니다. Import exsting projects 는 기존의 프로젝트에 포함, Use the New Project wizard는 새롭게 프로젝트를 실행, Import as general project 는 이클립스에 포함되지 않는 프로젝트를 포함시키는 항목입니다.  저의 경우는 Use the New Project wizard 로 선택하여 새롭게 프로젝트를 생성하였습니다.



12. txt 파일로만 만들어졌기 때문에 General->Project 를 생성한다음 Next 를 눌러줍니다.




13. 프로젝트 이름을 넣어주고 Finish 버튼을 눌러줍니다. 



14. 프로젝트 생성과 함께 github.com에 있었던 파일까지 정상적으로 clone되어 생성되었습니다.




15. 해당 프로젝트를 클릭후 우클릭 -> Team -> Show in History 를 클릭합니다. 



16. history 창이 열리면서 그동안의 커밋 정보와 날짜, 코맨트까지 볼수 있습니다. 



17. 이번엔 이클립스에서 파일을 생성하여 커밋후 올려보도록 하겠습니다. 해당 프로젝트에 test4.txt 라는 파일을 생성하였습니다. 파일의 이미지가 ?로 뜨는군요. 아직 커밋되지 않은 파일엔 ?가 뜹니다. 




18. 다시 해당 프로젝트 우클릭-> Team -> Commit 를 눌러줍니다. 



19. git 콘솔버전과 마찬가지로 커밋할때 코맨트를 지정해줄수 있습니다 . 코맨트를 지정후 아래의 커밋되지 않는 파일들 중에서 커밋할려는 파일을 선택하고 commit 버튼을 눌러줍니다. 



20. History 창을 보면 커밋한 날짜와 코맨트가 보입니다. 또한 커밋한 파일까지 보이는군요.



21. 이번엔 github.com 에서 확인해 보았습니다. 해당 프로젝트에 커밋한 파일이 정상적으로 올라간것을 확인할수 있습니다. (text4.txt 와 .project 파일)



22. 커밋할때 올린 코맨트 까지 정상적으로 나오는것을 확인할수 있습니다. 


출처 : http://uiandwe.tistory.com/804

Visual Studio를 위한 Git 환경 설정

아래의 글에 좋은 정보가 공개되었군요. ^^

Visual Studio 2010 with GIT
; http://i-ruru.com/entry/Visual-Studio-2010-with-GIT


위의 글에 따라, 우선 "Git for Windows"를 설치하고,

Welcome to the home page of Git for Windows
; http://msysgit.github.io/


TortoiseGit도 설치해 줍니다.

tortoisegit
; http://code.google.com/p/tortoisegit/wiki/Download?tm=2

for 64-bit OS 
; http://tortoisegit.googlecode.com/files/TortoiseGit-1.8.5.0-64bit.msi


마지막으로 "Git Source Control Provider" 확장을 Visual Studio에 설치합니다. (아쉽지만, Visual Studio Express 버전에는 설치되지 않습니다.)

Visual Studio Extensions - Git Source Control Provider (VS2010, VS2012) 
; http://visualstudiogallery.msdn.microsoft.com/63a7e40d-4d71-4fbb-a23b-d262124b8f4c 


구체적인 설치 과정에 대해서는 다음의 글을 참고하셔도 되지만,

Getting Started With Git and TortoiseGit on Windows
; http://robertgreiner.com/2010/02/getting-started-with-git-and-tortoisegit-on-windows/


제 경우에는 모든 설정을 기본값으로 두고 설치를 완료했습니다.




이제 간단한 설정 과정을 거칩니다. "Tools" 메뉴의 "Options"에서 "Source Control" 선택을 Git으로 하고,


"Git Source Control Provider Options" 영역도 다음과 같이 설정해 줍니다.

vs_git_2.png

여기까지의 내용은 사실 "Visual Studio 2010 with GIT"글의 내용과 거의 같습니다. 단지 제 블로그에도 올리고 싶어서 ^^ 그대로 글을 따라하면서 정리해 보았습니다.

이제 git config에 해당하는 설정과 ssh 키 설정하는 방법을 볼 텐데요. 이에 대해서는 다음의 글에서 자세하게 설명하고 있습니다.

Setting Up Git on Windows in Four Easy Steps
; http://blog.assembla.com/assemblablog/tabid/12618/bid/77264/Setting-Up-Git-on-Windows-in-Four-Easy-Steps.aspx


위의 글에 따라, 탐색기에 플러그-인 된 TortoiseGit 메뉴를 이용해 "Settings" 항목을 선택하고,

vs_git_3.png

"Git" 범주에서 "Name", "Email" 항목을 각각 채웁니다.

vs_git_4.png

그 다음 SSH 키를 생성할텐데요. 사실 로컬 git 저장소만 사용한다면 이 작업은 필요없습니다. 단지 github 등의 원격 저장소를 사용한다면 SSH 키 설정을 지금 미리 해두는 것이 좋겠지요. ^^ 

"시작" 메뉴로부터 "TortoiseGit" 범주의 "Puttygen"을 실행시킨 후, "Generate" 버튼을 누릅니다. 그럼, 키 생성을 위한 랜덤 요소를 부여하기 위해 마우스를 폼 위에서 무작위로 움직여 줍니다.

vs_git_5.png

마우스 움직임이 완료되면, 다음과 같이 키가 생성됩니다.

vs_git_6.png

키 영역에서 마우스 우측 버튼을 눌러 "Select All" 메뉴로 전체 텍스트를 선택한 다음 마찬가지로 "Copy" 메뉴로 클립보드에 공개키 내용을 복사합니다. (조금있다 재사용할 것입니다.)

이제 위의 화면에서 "Key passphrase"와 "Confirm passphrase"에 여러분들만이 기억할 수 있는 암호 문구를 입력하고 "Save private key" 버튼을 눌러 SSH 키를 저장합니다.

vs_git_7.png

제 경우에는 github.com을 이용할 것이기 때문에 SSH 키를 github에 등록할 것입니다. 계정 설정으로 가서, "SSH Keys" 메뉴를 통해 새로운 SSH Key를 등록해 줄 수 있습니다.

vs_git_8.png

위의 그림에서 "Key"의 내용으로는 이전에 Puttygen에서 복사했던 공개키를 입력해 주면 됩니다.

마지막으로, "C:\Program Files\TortoiseGit\bin" 폴더에 있는 pageant.exe 프로그램을 실행시키면 시스템 트레이에 Pageant(PuTTY authentication agent) 아이콘이 생성됩니다. 이 아이콘을 두번 누르면 다음과 같이 대화창이 하나 뜨고, 

vs_git_9.png

"Add Key" 버튼을 눌러 이전에 "Puttygen" 프로그램에서 저장해 두었던 "Private key" 파일을 선택합니다.

여기까지 완료했으면, github 사용하는데 더 이상 장애물은 없을 것입니다. (나중에 해보니까, pageant.exe 작업이 반드시 필요한 것은 아니었습니다. ^^)




더 이상 진행하기 전에... Git은 기존의 Visual SourceSafe나 TFS와는 사용법이 확연히 다르기 때문에 가능한 관련 서적을 한권 정도 읽어보시는 것이 좋습니다. 서적끼리의 비교는 할 수 없으나 적어도 아래의 책 정도는 틈나는 대로 읽어보시는 것이 좋습니다.

프로 Git: 그림으로 이해하는 Git의 작동 원리와 사용법
; http://www.yes24.com/24/goods/8737301


출처 : http://www.sysnet.pe.kr/2/0/1501

먼저, eclipse는 설치 되었다고 가정하고 진행하겠습니다.^^;

  1. eclipse marketplace에서 git관련 플러그인을 설치합니다.



    ▶ HELP 탭에서 "Eclipse Marketplace를 선택하여 "egit"를 검색하여 Install.


  2. local에 git repository를 생성합니다.


    ▶ "Create a new local Git repository"로 local에 repository를 생성합니다.


  3. local에 생성된 repository와 서버에 있는 repository를 연동합니다.



    ▶ Project Explorer에 local reposiroty와 연동 되면 위와 같이 표시 됩니다.


  4. 작성된 source code를 local에 commit합니다.

    ▶ 소스 작성 후에 coomit을 하면 local repository에는 연동한 디렉토리에 반영이 되고 "Git repository" perspective view에 표시가 됩니다.


  5. local에 commit 된 내용을 server에 "push"합니다.



    - 최종적으로 git서버에 "push"를 해야 다른 개발자들도 "fetch"를 통해서 소스가 공유됩니다.
    (저는 종종 commit만 하고 push를 안해서 소스 반영이 안되곤 했었드랬죠.... -_-;)

여기서 중요한 것은 local에 여러번 commit을 하면 commit log도 여러개가 되겠죠... 이 여러번 commit된 local repo를 git 서버로 push하면 똑같이 여러번 commit한것 처럼 server에도 반영이 됩니다. 이 방식은 svn과 비교되는 "분산 버젼 관리" 방식이죠. 

아직 분산버전관리라는 이점을 제 자신도 잘 활용하지 못하는 느낌이 많이 들지만... 그냥 느낌상으로 svn보다는 conflict가 잘 안난다는 느낌이가 듭니다... branch와 branch와의 merge도 그렇고 repo와 repo사이의 push도 그렇고 conflict가 잘 안난다는 점은 개발자 입장에서 기분이 좋죠 ㅎㅎ


+ Recent posts