:::: MENU ::::
Posts tagged with: github

Github에 100MB 이상 파일 올리는 법

Github은 100MB이상의 파일을 올리지 못하게 되어 있는데, 해결 방법은 git-lfs를 설치해서 올리면 된다.

git-lfs를 설치
https://git-lfs.github.com/ 에서 파일을 다운로드하고 install.sh 를 실행한다.
git lfs install을 실행해서 설치가 제대로 됐는지 확인한다.

git lfs install

github에 올릴 파일을 등록한다.

git lfs track “*.xxx”

그 다음은 똑같다.

git add *.xxx
git commit -m “Add design file”
git push origin master


Github – Fork한 repo를 업데이트 하기

Github에서  Fork한  repo를 원본과 싱크를 맞추어 업데이트하려면… Fork한 repo를 셋업하고 local clone을 만든다.

$ git clone https://github.com/YOUR-USERNAME/xxxx.git

그리고 이것을 original과 sync하려면 먼저 리모트 설정하고 패치를 하면 된다. local clone의 위치로 이동을 하고..

$ git remote add upstream https://github.com/xxxx/xxxx.git

확인

$ git remote -v
# origin    https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
# origin    https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)
# upstream  https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (fetch)
# upstream  https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (push)

패치

$ git fetch upstream
# remote: Counting objects: 75, done.
# remote: Compressing objects: 100% (53/53), done.
# remote: Total 62 (delta 27), reused 44 (delta 9)
# Unpacking objects: 100% (62/62), done.
# From https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY
#  * [new branch]      master     -> upstream/master

체크아웃

$ git checkout -b master
# Switched to branch 'master'

참고

https://help.github.com/articles/fork-a-repo/

https://help.github.com/articles/syncing-a-fork/


git 관련 팁 – .gitignore

.gitignore를 설정 전에 원하지 않는 파일(예를 들면 소스가 아닌 컴파일된 obj 파일 같은..)이 repositary에 add/initilized된 경우는 cache를 지우고 tracking을 다시 설정해야 한다.
먼저 필요한 파일들을 commit한후 다음의 명령어를 실행한다.
cache 삭제

git rm -r –cached .

다시 tracking 하도록 설정

git add .

그 다음 commit

git commit -m “.gitignore is now working”


github에 SSH키 생성 및 등록

Permission denied (publickey).
fatal: Could not read from remote repository.

github을 잘 사용하다가 어느 순간 위와 같은 Permission 에러가 나서 다시 SSH키를 등록했다.

아래와 같이 터미널에 입력하는데 이메일은 github에 등록한 이메일을 사용한다.
ssh-keygen -t rsa -C “[email protected]

passphrase(암호)를 넣어준다.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

새로운 키를 에이전트에 추가한다.
eval “$(ssh-agent -s)”
ssh-add ~/.ssh/id_rsa

다음과 같이 입력하면 새로 만든 키가 클립보드에 저장이 된다.
pbcopy < ~/.ssh/id_rsa.pub

github.com 에 로그인하고 Settings에 들어가 SSH Keys 메뉴를 선택하고, Add 버튼을 선택한 후 클립보드에 복사된 내용을 붙여 넣는다.

터미널에 입력하여 확인한다.
ssh -T [email protected]

다음과 같은 메세지가 나타나면 정상
Hi username! You've successfully authenticated, but GitHub does not
# provide shell access.

참고: https://help.github.com/articles/generating-ssh-keys/


Github – Fork한 저장소 업데이트하기

Github에서 fork한 저장소를 원본 저장소와 연결해서 업데이트하려면, github에서 제공하는 툴에는 메뉴가 없으므로 터미널에서 작업을 해야한다.

Remote 설정

현재 설정된 리모트 저장소를 확인

$ git remote -v

새로운 리모트 업스트림을 추가

$ git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git

추가된 리모트 저장소 확인

$ git remote -v

다음과 같은 형태로 업스트림이 추가된 것을 볼 수 있다.

Fork한 것을 업데이트

패치를 한다.

$ git fetch upstream

그다음에 checkout… 일반적으로 master이고 내가 fork한 브랜치의 이름을 적어야 한다.

$ git checkout master

merge를 한다. 이때도 일반적으로 master이고 내가 fork한 브랜치의 이름을 적어야 한다.

$ git merge upstream/master

Conflict 해결하기

충돌 상황을 확인

$ git status

충돌이 생긴 파일의 시작 부분에 <<<<<<< HEAD, 끝 부분에 >>>>>>> 표시가 되어 있다. 이것을 해결한 후에 git add 명령으로 변경된 파일을 추가하고 commit를 하면 된다.



git 사용법

git에 대한 위키피디아 문서
http://en.wikipedia.org/wiki/Git_(software)

git 사용자 설명서: 잘 정리된 메뉴얼
http://namhyung.springnote.com/pages/3132772
 
git 튜토리얼 메뉴얼 페이지
http://www.funit.net/git

github에 대한 글: Github, 코드 개발 기반 소셜 네트웍
http://channy.creation.net/blog/626

git는 분산 버전 관리 시스템이며 리눅스 커널 개발에 사용하기 위해 리누스 토발츠가 처음 디자인과 개발을 하기 시작했다.
가장 큰 장점인 수정 내용을 매번 마스터 저장소에 커밋해서 올리는 대신에 저장소 전체의 로컬 복사본을 사용한다는 것이다. git을 사용하면 각 개발자가 작업을 진행할 수 있는 자신만의 샌드박스를 가지고 있으며, 작업을 마친후에 변경내역을 마스터 저장소에 push  할 수 있다.

아래 그림을 보면 각 명령어와 동작 flow가 쉽게 이해가 됨…

아래 위키피디아의 그림은 보다 간단히 이해를 도울 수 있다.

윈도우용 git 설치: http://code.google.com/p/msysgit/downloads/list  여기서 다운로드를 받아서 인스톨한다.
인스톨 과정중 모든 옵션은 그냥 디폴트옵션을 사용한다.
인스톨이 끝나면 Git GUI와 Git Bash가 설치되며, 탐색기에서 오른쪽 버튼을 누르면 다음과 같이 git 메뉴가 생긴다.

일단 프로젝트를 관리할 폴더에서 Git Init Here를 선택을 하고, Git Gui를 선택을 하면 다음과 같이 Unstaged Changes항목에 파일들이 들어 있는게 보인다.

커밋할 파일을 선택하고 Commit>Stage to commit을 선택을 하면 파일들이 아래도 내려오며, 오른쪽 하단에 메세지를 입력하는 창에 메세지를 입력을 하고 Commit을 하면 커밋이 된다.
커밋이 잘 됐는지 여부는 Repository > Visulize mater’s History 명령으로 확인이 가능하다.

이제 github에서 repository를 생성한다. Project name만 적으면 되고 나머지는 option이다.
SSH설정은 http://help.github.com/win-set-up-git/ 의 “Set Up SSH Keys” 부분을 참고한다.
이렇게 해서 생성된 키는 Win7의 경우 C:\Users\사용자\.ssh 아래에 저장이 되며, Git GUI에서 Help > Show SSH Key 를 통해서도 SSH키 값을 볼 수 있다.

만약 프로젝트 이름을 my_test로 할 경우 Git GUI에서 설정은 다음과 같다.
Name은 Github 계정이름이고, my_test는 [email protected]:jbkim/my_test.git 위치에 놓이게 된다. 


다음엔 push를 하면 되는데, Remote > Push 를 하면된다.

이때 SSH키를 만들때 passphrase를 물어보면 입력하면 된다.