Github는 GIT를 공개 웹호스팅이며, 최근 3년사이에 사이트가 많이 변경이 되어 Manual도 다시 Update한다.
별도의 Github에서 Window Program을 제공하지만, 이것보다는 Source Tree가 더 쓰기가 괜찮은 것 같다.
2. Github의 기본구성
더 이상 Bootcamp는 제공하지 않으며, Guide와 Start Project로 간단하게 구성되어있다.
그리고, 본인의 프로젝트와 Fork된 프로젝트가 아이콘으로 구분이 되어 표시되어진다.
- Github 기본사이트
- 이전메뉴
- 본인의 실제 Github
- Gist : 소스를 공개적으로 쉽게 쓸 수 있고 공개 할수 있다.
- Git : Server를 무료로 사용해주게 해준다.
- GIT 기본사용서
- Github Help
- Gist 의 설명
- wiki 의 설명
- Remote repositories
- Git Command의 일반적인 작업
https://blog.osteele.com/2008/05/my-git-workflow/ |
Github 사이트가서 Start repository 한 후 하고 Repository 이름을 정하자.
그리고, git init 와 git clone으로 이를 down load를 한다.
- Linux 에서 Git 설치 및 준비
$ sudo apt-get install git
**HTTPS 할 경우, Username과 Password 입력 ( Username Github 주소 표시)
**SSH 일 경우 ssh-keygen을 이용하여 key 생성후 이를 Github에 Setting->SSH Keys 등록
나의 경우, SSH가 편하고 좋으며, 한번 Key 생성 후 등록하면 걱정할 필요없다.
- Window 에서 설치 (선택)
- Github Program 설치
- Source Tree 설치 ( 다시 설명)
https://www.atlassian.com/git/tutorials/syncing
- GIT 기본설정 (SSH/HTTPS 반드시 먼저설정)
$ git config --global user.email "you@example.com" //Github 설정된 email $ git config --global user.name "JeonghunLee" //Github UserName
- GIT 설정확인
$ git config --list // 현재 설정된 부분 확인 user.email=xxxxxxxxx // 상위에서 설정한 Github 설정된 email user.name=JeonghunLee // 상위에서 설정한 Github Username ...... remote.origin.url=https://github.com/JeonghunLee/xxxx.git remote.origin.fetch=+refs/heads/*:refs/remotes/origin/* branch.master.remote=origin branch.master.merge=refs/heads/master
- GIT Remote 확인
$ git remote -v // Remote Repository와 좌측 이름 확인 origin https://github.com/JeonghunLee/Ubuntu1804_Basic.git (fetch) origin https://github.com/JeonghunLee/Ubuntu1804_Basic.git (push) // 상위 remote.master.remote=origin 되었으면, remote -v의 좌측역시 동일하게 되어야함
3.1 Github에서 Remote New Repository 생성
아래와 같이 Github Site에 로그인을 한 다음에 Repository로 가서 New or Start Project 본인이 직접 새로운 Github의 Remote Repository를 생성한다.
A. Github 사이트에서 Remote Repository 생성
Github에서 Remote Repository 생성시 아래와 같이 간단히 사용법을 알려준다.
B. 본인이 작업한 소스를 Local Repository에 생성 및 등록 Update한다
- git init : Git Local Repository를 구성한다
- git add : add로 Index(Head)에 등록한다
- git commit -m : Commit으로 최종적으로 Local Repository 등록.
- git status : 현재 GIT 상태를 파악
- GIT Project 생성 및 파일추가 와 Local Repository에 Commit
echo "# ahyuo.github.io" >> README.md git init git add README.md // STAGE/INDEX 에 File 등록 git commit -m "first commit" // Local Repository에 Commit git status // 현재 GIT 상태확인 및 다음해야할 Command 추천
C. Remote Repository와 등록 및 Push.
- git remote add orgin : 현재 만들어진 new repository를 추가등록
- git push -u orgin master : Local Repository와 Remote Repository를 Sync 즉 Update
$ git remote add origin https://github.com/JeonghunLee/test
$ git remote -v // 등록된 remote Repository 확인
$ git push -u origin master
상위에서 설명한 Remote Repository 설정확인
3.2 Github에서 Remote Repository를 가져올 경우
직접 만들지 않고 기존에 존재하는 Remote Repository에서 Source를 Download하여 사용하는 경우이다.
보통 본인이 하던 작업 or 다른 Github 사람 작업 가져오기 경우가 될 수 있겠다.
$ git clone https://github.com/JeonghunLee/test.git //소스 가져오기
본인 Repository를 수정을 한 후 update 하고 싶다면 상위와 동일하다.
$ git add * // Local Index(Stage) 에 등록 $ git commit -m "added my functtion commit" // Local Repository 등록
$ git remote -v // 등록된 remote Repository 확인
$ git remote add origin https://github.com/JeonghunLee/test.git
$ git push -u origin master
만약 push가 되지 않는다면, 상위에서 설명한 Remote Repository 설정확인
3.3 Web에서 Github 의 Repository를 수정/추가 한 경우
아래와 같이 본인의 작업환경에가서 Remote Repository가 변경이 되어있으므로,
Local Repository도 아래와 같이 Sync를 맞춰준다.
$ cd test // 본인의 Local Repository 이동 $ git pull https://github.com/JeonghunLee/test.git // 나의 Github의 Repository와 Sync를 맞춰어주는 작업
3.4 Remote Repository 등록 과 Update(push) 할 경우
이제 상위에서 기본 사용법을 익혔으니, 실제 HTTPS or SSH로 이용하여 Remote Repository에 이용해보자
이미 Local Repository 가 생성이 되어있다고 가정하고, 아래 방법으로 Update만 하면된다.
git init 중요 (Local Repository 생성)
- A. HTTPS로 했을 경우
// Github에서 이미 Remote Repository를 생성 $ git remote add origin https://github.com/JeonghunLee/test.git // Remote Repository 등록 (Github Remote 등록) $ git remote -v // 등록된 remote Repository 확인 $ git push -u origin master // Local Repository 와 Remote Repository Push 하여 Sync Username for 'https://github.com': Password for 'https://xxxxx@github.com':
- B. SSH로 했을 경우
// Github에서 이미 Remote Repository를 생성 $ git remote add origin git@github.com:JeonghunLee/test.git // Remote Repository를 origin 등록 $ git push -u origin master // origin의 등록된 Remote Repository의 master에 Push
1. SSH Key 생성하는방법 (본인 email 사용)
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com" // RSA 기반으로 나의 Github Email 기반으로 Key생성
Generating public/private rsa key pair.
Enter file in which to save the key (/home/jhlee/.ssh/id_rsa):
Created directory '/home/jhlee/.ssh'.
2. Password 두번 입력
Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/jhlee/.ssh/id_rsa. // Private Key (Base64 Encoding) Your public key has been saved in /home/jhlee/.ssh/id_rsa.pub. // Public Key (Base64 Encoding) The key fingerprint is: cf:bf:e0:59:f4:e5:9b:c5:6d:f9:17:df:1d:7c:f4:c0 your_email@example.com The key's randomart image is: +--[ RSA 4096]----+ | .oo. | |. .oo | |o . +o* . | | + + O.+ | | o o * S | | . * | | E . | | . | | | +-----------------+
3. Key를 확인하고 Github의 개인설정 Setting->SSH Key 등록
$ cat ~/.ssh/id_rsa.pub // 이정보를 전체 입력
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDLRdkIhvX5JZmRjaz6r19sdvHj+iDWskd+e8EWkFjrhuPFQdtd5KuFpgpDnchpgLNSxIYug0KzELqiiYMBk0MakVjvAlv9G5jo+VioHFsk9Hql9mAJUTQJ9sMAcu+JLY+3gGChNRbHTcnUK1Jm5SnPETmkasflA2Miv3ifhsr6Odmdc2VXtj6jqGrPGp47i21SXscszmGAdPtaUffo9xmfX9XKOOXjml2exNDPKl58Qu9OAF8Bn4Izxou34ctozA+UflJYOwCgcPf+dt3pa7SvnfpnzZpk4QsVh/ertjmUxno7Go71TgZRiwRe/lnK6xSmm0PDWjX2zquqagOaCkz/ your_email@example.com
4. 개인설정 (Setting->SSH Keys 등록) 후 확인
Github 암호 없이 SSH Key 기반으로 접속이 가능
4. SSH-Agent 를 실행
$ eval "$(ssh-agent -s)" Agent pid 2612
5. SSH에서 Key 추가 후 git push 실행
$ ssh-add ~/.ssh/id_rsa Enter passphrase for /home/jhlee/.ssh/id_rsa: Identity added: /home/jhlee/.ssh/id_rsa (/home/jhlee/.ssh/id_rsa)
Key 생성방법 및 추가방법 (Github 설명)
https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/
Key 확인방법
https://help.github.com/articles/checking-for-existing-ssh-keys/
추후 관리는 git tag version 관리를 진행하고 git push remote와 sync를 맞추고새로운 file이 있을 경우 git add로 등록을 해주고 git commit으로 반영하고
remote와 sync를 맞추자.
사실 Tool로 관리하는 것이 편하긴 편하다.
3.5 Github 의 Repository Setting
개별 Repository 의 Setting 의 기능에 대해 기본적으로 알아보자.
- Repository 이름 변경
- Repository 삭제 가능
4. 상대방과 협업
Local repository 라는 본인의 개별 공간을 생성도 가능하지만, 상대방 Remote repository 와 나의 Remote Repository를 이용하여 협업도 가능하며,
상대방 Remote Repository에서도 협업이 가능하다.
- Fork는 상대방 Repository를 내 Repository로 그대로 복사해 오는 것
- Pull Request는 상대방 Repository 와 내 Remote Repository와 Merge하지하기 위해 요청하는 것
- Fork
다만 이때 라이센스를 확인을 하고 가져오고 사용하자.
그리고, 이제 가져온 Repository는 내 맘대로 수정이 가능하며 권한도 내가 가지고 있다.
만약 수정을 하여 상대방이 내 소스가 좋다고 느껴 Pull Request를 할지도 모른다.
그러나, 보통 보면, 이것을 많이 거절하는 것 추세로 가는 것 같다.
그래도 반드시 참조와 라이센스는 중요하다.
- Pull Request
이것을 이용하여 소스를 Merge하고 협업이 가능한 것이다.
Git의 pull command라는 것이 fetch하고 merge하는 기능이기에 일종의 상대방 Repository와 내 Remote Repository를 싱크를 맞추는 요청이다. (pull command)
if you are hoping to contribute back to the original fork, you can send the original author a pull request
5. Github에서 Download 하는 방법
Github 계정이 있다면, 상대방의 Public Github를 가져오는 방법은 Fork로 가져오면된다.
본인의 Github 소스를 Download 하고 싶다면 git clone을 이용하자.
6. Github Desktop 설정 및 기본사용법
아래 설정은 참고만 하고, 기본적으로 거의 고칠필요는 없다.
추후 이 챕터는 다시 작성.
- 설정->Repository Setting
.gitattributes 설정 // Line endings and attributes 변경
.gitignore의설정 // Ignored files
- 설정->Option
- Configure git 기본환경설정
- Clone Path : my window repository path
- Shell 설정
Configure git는 GIT Command (git config --global user.name , user.email) 동일하며, 이며, 추후 여기에 설정되는 값들은 git config에 반영이 되므로, git config --list 로
확인하자.
여기서 create를 해주고, 파일들을 등록하고, 마지막에 Publish Repository를 해주면,이를 github에 자동으로 등록해주고, Github에 Remote Repository를 생성해준다.
물론 난 Public으로 생성
그런데, Publish 하는 도중 Error Failed to publish this branch 에러가 발생하는 경우가 발생한다. 이녀석이 https로만 통신을 하는데, 뭔가 문제가 발생을 한다.
내쪽에서 그래서 Proxy Server를 사용하면 해결이 된다고 하는데, 해보지 않았다.
내쪽에서 그래서 Proxy Server를 사용하면 해결이 된다고 하는데, 해보지 않았다.
지금 이 Tool이 https로만 동작하기에 , 설정에서 Repository Setting 에서 변경 불가능 해결책은 두가지다.
Proxy Server를 이용하거나, Shell을 이용하여, 직접 ssh주소로 연결하여 push하는거다.
1. Proxy Server 해결방법.
git config --global http.proxy http[s]://userName:password@proxyaddress:port
관련내용.
http://stackoverflow.com/questions/13894387/github-failed-to-publish-this-branch-error-on-windows
2. Terminal에서 ssh주소로 직접 연결
나는 귀찮아서, 이 방법으로 선택했으며, git command도 익힐 겸 해서 아래와 같이다 git command로 작성해서 해결을 했다.
이 문제가 발생하면, github와 통신이 제대로 안되다 보니, Tool에서 제공하는 clone 기능과 sync기능 역시 제대로 안된다. 직접 command로 해야한다.
다행히,Github에 자동으로 Repository까지는 생성이 되어서 귀찮게 Github사이트에 만들 필요가 없었다.
위와 같이 Github 사이트에서 나의 새로운 프로젝트를 확인을 하고, SSH주소를 확인을 한다.
지우고 싶다면, Setting -> Danger Zone의 Delete this repository 를 사용하면된다.
아래와 같이 한 이유는 origin 이미 https 주소로 사용되어있기에, ssh로 새로 사용.
Proxy Server를 이용하거나, Shell을 이용하여, 직접 ssh주소로 연결하여 push하는거다.
1. Proxy Server 해결방법.
git config --global http.proxy http[s]://userName:password@proxyaddress:port
관련내용.
http://stackoverflow.com/questions/13894387/github-failed-to-publish-this-branch-error-on-windows
2. Terminal에서 ssh주소로 직접 연결
나는 귀찮아서, 이 방법으로 선택했으며, git command도 익힐 겸 해서 아래와 같이다 git command로 작성해서 해결을 했다.
이 문제가 발생하면, github와 통신이 제대로 안되다 보니, Tool에서 제공하는 clone 기능과 sync기능 역시 제대로 안된다. 직접 command로 해야한다.
다행히,Github에 자동으로 Repository까지는 생성이 되어서 귀찮게 Github사이트에 만들 필요가 없었다.
위와 같이 Github 사이트에서 나의 새로운 프로젝트를 확인을 하고, SSH주소를 확인을 한다.
지우고 싶다면, Setting -> Danger Zone의 Delete this repository 를 사용하면된다.
아래와 같이 한 이유는 origin 이미 https 주소로 사용되어있기에, ssh로 새로 사용.
$ git remote add ssh git@github.com:xxxxxx. $ git push ssh master // ssh remote주소에 master branch를 push한다.