Git --distributed-is-the-new-centralized


http://git-scm.com/


- 자신의 로컬에 저장소를 가진다.

- 원격저장소(Remote Repository)인 리모트(Remote) 저장소가 있다.

- 자신의 로컬저장소(Local Repository)에 저장(index | stage) 한다.

- 공용저장소에 커밋(push) 한다.


설정


전체설정(global)의 경우 설정파일은 윈도우즈일 경우 C:\Users\<사용자>\.gitconfig


변경 및 수정은 다음과 같이 한다.


> git config --global user.name "사용자명"


.gitconfig 파일에 아래처럼 기록될 것이다.


[user]

name = 사용자명


한글 파일명이 깨져보이지 않도록 설정

> git config --global core.quotepath off


mac osx 에서 한글때문에 생기는 문제는 다음 설정 추가.

(https://heartgamer.wordpress.com/2015/02/15/맥mac-os에서-git을-사용할-때-한글-파일명-때문에-생기는-문/

, http://git-scm.com/docs/git-config

, http://aero2blog.blogspot.kr/2011/07/macos-x.html

, https://kldp.org/node/132431

, http://gypark.pe.kr/wiki/Git)


> git config --global core.precomposeunicode true

> git config --local core.precomposeunicode true


에디터 지정

> git config --global core.editor "\"EditPlus 전체경로\""


버전관리 폴더에서 버전관리 프로젝트로 초기 생성


> git init


없애려면


> git remove


새로 생성하는게 아니고 이미 원격저장소가 있다면 통째로 복사해 오면 된다.


> git clone <원격저장소URI> [저장할폴더명]


설정에서 무시할 파일들을 지정해 주자. 이건 그냥.. 관용구라 생각하고 어디에 복사해 놓고 그냥 쓰자.

(참고로 d: 드라이브의 project/study 폴더를 생성하여 해당 폴더위치에서 작업중이다.)


> git config --global core.excludesfile /d/project/study/.gitignore


** 파일의 추가 없이 기본 workflow 부터 만들고 싶다면, 빈 커밋을 우선 실행한 후 develop branch 를 생성한다.

> git commit --allow-empty -m 'Initial commit'

> git checkout -b develop


(git config --global alias.emptycommit "commit --allow-empty -m 'Initial commit'" 으로 단축어를 등록할 수 있다.)


파일을 하나 생성하고


> vi test.txt


파일을 추가한 후


> git add .


한개씩 추가하려면


> git add file file file .......


삭제하고 싶다면


> git rm <file>


하드디스크의 물리적 파일은 삭제 하지 않고 git에서만 삭제하고 싶다면.. (실수로 추가한 경우등..)


> git rm --cached <file>


버전 관리 상태를 확인


> git status


커밋이 필요한 이력 변경 내용이 있다면 표시된다. 코멘트를 포함하여 로컬 저장소로 커밋한다.


> git commit -m '주석'


정상출력 및 오류시 결과가 출력된다. 이번엔 리모트 서버에 저장소 목록을 살펴 보자.


> git remote -v


만든게 없다면 안보일거다.

리모트 저장소를 만들어 보자. remote 서버의 https://github.com/xxx/study 위치에 study라는 이름의 저장소를 add 한다.

실제 리모트저장소에 만드는게 아니다. 로컬에서 변수를 만들어 둔거라고 생각하자 (ex :  String remote = "https://github.com/xxx/study"; )

(github는 무료 저장소다. 하지만 소스가 공개상태로 된다. 유료로 사용해야만 비공개로 만들수 있다.)


> git remote add study https://github.com/xxx/study.git


다음의 형식이다. name이 꼭 url 과 같아야 할 필요는 없다. 별명이라고 생각하면되겠다.

> git remote add <name> <url>


삭제 하고 싶다면


> git remote remove study


생성한 저장소에 push 하자.


> git push <저장소이름> <브랜치명>


> git push study


or


> git push -u study master


옵션으로 -u 를 넣으면 이후로 <브랜치명>을 지정하지 않아도 된다.(git push 만 해도 된다.) 당연히 최초에는 다 넣어야한다.


username 과 password 를 입력한다.


저장소의 변경이력을 확인해 보자


> git log


GUI 를 이용해서 확인하려면


> gitk


이번에는 다른 사용자가 반영한 내용이 없는지 확인하고 변경내용이 있다면 내려받도록 해보자.


> git pull [<저장소명>] [<브랜치명>]


사용자간 동일파일 변경시 충돌이 발생하면 병합 (merge ) 작업이 필요하다.

원격저장소에 올리다가 거부당하면 우선 원격저장소의 소스를 받아와야(pull) 한다. 해당 명령을 실행하면 자동 merge 작업이 되나, 같은 위치의 내용이 수정될경우 자동merge 가 실패 되었다는 메시지를 확인할수있다.


Automatic merge failed;


해당하는 파일을 편집기로 열어보면 다음의 형식으로 나온다.


<<<<<<< HEAD
written by local
=======
written by remote
>>>>>>> fb51122d60d93319ccb4a69005b07635444a5ff0


======= 를 기준으로 위쪽이 내가 작업한 내용, 아래쪽이 원격에 있던 내용이다. 내용을 적당히 수정하여 저장하고 ADD, COMMIT, PUSH 의 작업을 다시 해주면 된다.






Posted by KENSIN
,