ubuntu에서 github 에 push 를 하려 했더니 권한이 없다고 에러가 납니다.

해당 문제는 유저의 ssh 가 등록되지 않아 github의 접근 권한이 없어서 나오는 문제입니다.  

이제 요놈을 어떻게 하면 되는지 보겠습니다.(쫌 깁니다.)


1. 만일 ssh-keygen 이 생성되지 않았다면 생성해줘야 합니다. (만일 기존에 생성되어있다면 3번부터 해주시면 됩니다.)

ssh-keygen -t rsa -C "이메일"


2. 생성한 ssh 키는 /home/유저/.ssh/id_rsa 에 생성되었습니다.


3. 먼저 해당 폴더로 이동후 ssh 키를 복사해줘야 합니다.

cat /home/유저/.ssh/id_rsa.pub

커맨드창에 나오는 긴 문자열을 복사해줍니다. 


4. github의 소스를 올리려 했던 저장소에 들어가 보면 오른쪽에 settings 메뉴가 있습니다. 클릭.


5. 메뉴중 Deploy keys 를 클릭. Add deploy key 를 클릭하면 아래의 화면과 같이 나옵니다. 

아까 복사했던 ssh 키를 넣어주고 타이틀은 적당히 아무거나 넣어주고 Add Key를 눌러줍니다. 


6. ssh키의 비번을 넣어줍니다. 


7. 해당 키가 생성되었습니다. 


8. 다시 커맨드차에서 잘 등록이 되었는지 테스트 합니다. Hi 유저/레파지토리 가 정상적으로 나오면 잘되는겁니다. 

ssh -T git@github.com


9. 이제 push 를 해보시면 정상적으로 올라갑니다. 


저작자 표시
신고

WRITTEN BY
No.190
세계정복의 시작점

받은 트랙백이 없고 , 댓글 하나 달렸습니다.
  1. 감사합니다.
    따라하니 push가 잘되는데 이전에 되던 push가 갑자기 왜 안되었던 것인지 알수 있을까요?
secret

https://docs.c9.io/setting_up_github_workspace.html


간단함!

저작자 표시
신고

WRITTEN BY
No.190
세계정복의 시작점

받은 트랙백이 없고 , 댓글이 없습니다.
secret



pull / reset 관련해서 포스팅 하던중 엄청난 사이트를 발견하였습니다;

기능이 후덜덜합니다.

명령어 대로 화면에 표현되며, 예제로 만들수도, 친구에게 문제를 낼수도 있습니다;

(진심 이런것을 개발 하신분 존경스럽습니다.)


http://learnbranch.urigit.com/


총 10단계로 되어 있으며 간단하면서도 실무에 쓰일만한 예제들로 되어 있다.


git 를 처음 접하시는 분들이 많이 보셨으면 한다.


- 혹시 답을 정말 모르겠다면 show solution 을 치면 된다.

저작자 표시
신고

WRITTEN BY
No.190
세계정복의 시작점

받은 트랙백이 없고 , 댓글이 없습니다.
secret

본 포스팅은 이클립스 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. 커밋할때 올린 코맨트 까지 정상적으로 나오는것을 확인할수 있습니다. 









저작자 표시
신고

WRITTEN BY
No.190
세계정복의 시작점

받은 트랙백이 없고 , 댓글  2개가 달렸습니다.
  1. 감사합니다 2013.10.31 17:46 신고
    잘보았습니다!
    그런데 마지막에 저역시 text7.txt파일을 만들고 커밋까지 했는데
    github에는 적용이안되는듯합니다.
    권한이없어서 그런건가요?
    제가 초보라서;;
    • 죄송합니다. 댓글을 이제서야 확인했습니다. 정말 죄송합니다.
      제 생각엔 커밋은 하셨지만 파일은 올리시지 않은거 같습니다.
      (올릴 파일도 클릭해줘야 합니다.)
      코멘트는 수정되었지만 파일이 않올라갔다면 위와 같은 상황일겁니다.
      권한에 대해서는 별다른 처리를 하지 않으셨다면 이클립스에서 git로 접속이 된다면 모든 권한을 가지고 오신겁니다.
secret





먼저 github.com에서 바로 다운받기 위해서는 해당 저장소에서 zip버튼을 눌러주면 zip으로 압축된 파일을 바로 다운 받으실수 있습니다.



이번에는 git를 이용하여 기존에 github.com에 올린 자료를 다른컴퓨터에서 다운받는것, 그리고 오픈중인 하나의 소스를 git를 이용하여 다운받는것을 해보겠습니다.


먼저 오픈중인(public로 설정된 저장소)의 소스를 받아보도록 하겠습니다. 요즘 제가 관심있는 JNA 프로젝트를 받아보도록 하겠습니다.




1. jna 프로젝트는 저장소주소 (https://github.com/twall/jna.git)로 되어 있습니다. 




2. 저장소에서 로컬로 가져오는 소스를 통채로 가져오는 명령어는 git clone "저장소주소" 입니다.

용량이 상당해서 시간이 꽤나 걸렸지만 정상적으로 다운이 완료되었습니다.

$git clone https://github.com/twall/jna.git 

.....

..... done.




3. 예전글에서 올렸던 git_test도 한번 다운받아보겠습니다.  github.com 의 주소는 https://github.com/uiandwe/git_test.git 입니다. 몇개 않되니 바로 끝나버리는군요. 완료되었습니다.

$git clone https://github.com/uiandwe/git_test.git

.....done.



- github.com 의 소스 뿐만 아니라 오픈소스가 git로 서버가 운영된다면 주소만으로도  다운 가능합니다. 




4. 이번에는 다운 받을 위치를 변경해 보도록 하겠습니다. clone로 다운받을시 프로젝트의 이름을 그대로 생성되기 때문에 git_test 폴더로 생성됩니다. 이것을 test 폴더로 변경해서 다운받기 입니다. clone명령어를 그대로 사용하면서 뒤에 변경할 폴더를 입력하면 됩니다. 

$git clone https://github.com/uiandwe/git_test.git \test












저작자 표시
신고

WRITTEN BY
No.190
세계정복의 시작점

받은 트랙백이 없고 , 댓글 하나 달렸습니다.
  1. 잘 봤습니다.
secret

이번에는 여러 사람들과 공유할수 있도록 github 싸이트에 공유하는것을 포스팅 하겠습니다.



1. 먼저 github.com 에 계정을 생성합니다. 사용할 이름, email, 비번만 넣으면 생성완료.(정말 심플합니다.)

경로 : https://github.com/




2. 오른쪽 하단에 New repository를 클릭하여 저장소를 하나 생성합니다.



3. 로컬폴더 이름과 저장소 이름은 똑같이 정했습니다. 이름만 확인하고 바로 create repository 로 생성합니다.




4. 생성과 함께 경로가 나옵니다. 해당 경로는 업로드 및 다운받을때 필요하니 기억해 주시기 바랍니다.(업로드시에는 아이디만 있어도 됩니다.)




5. 이젠 해쉬키를 생성해야 합니다. 해쉬키는 로컬의 git에서 해당 계정에 대해서만 생성됩니다.(챕터1에서 8번을 보시면 사용자이름과 이메일을 지정한 부분이 있습니다. - $ git commit --global user.email "사용하는 e메일"

$ git commit --global user.name "사용하는 이름"-)  입력한 이름과 메일을 가지고 해쉬값을 만들어줍니다.

해당 해쉬값은 github 사이트에 업로드시 사용됩니다. 해당 사용자가 맞는지 확인하는 값입니다. 따라서 한번만 지정해 주면 됩니다. 


$ssh-keygen -t rsa 

엔터, 엔터, 엔터 (중간에 해당 경로로 지정할꺼냐고 물어봅니다. 엔터로 넘어가줍니다.)




5. ssh 암호는 /ssh 경로에 파일이 생성됩니다. 이동하여 파일을 열어봅니다.

$cd ~/.ssh

$explorer .




6. id_rsa.pub 라는 파일이 있습니다. 해당 파일을 메모장으로 열어서 해당 내용을 복사합니다.





7. 다시 github.com 으로 넘어옵니다. 로그인 한 상태에서 상단의 account setting(공구모양)->ssh keys->add sshkey 를 클릭합니다. 



8. 6번에서 복사한 해쉬키를 넣어줍니다. add key 버튼 클릭. 이것으로 github에서의 작업은 끝났습니다. 다시 git로 돌아와서 올려보도록 하겠습니다.





9. 현재 branch는 master. 파일은 test , test3 이렇게 있으며 커밋은 두번한 상태 입니다. 




10. 먼저 어떤곳으로 올려야 할지를 지정해 주어야 합니다. git remote add 명령어로 지정할수 있으며 해당 주소는 4번에서 저장소를 생성하고 나서 표시 되었던 주소입니다.(여기서 사용하기 때문에 기억하라 했습니다.)

$git remote add origin "4번에서 보여줬던 주소"

(origin 는 github 주소를 지칭하는 이름입니다. 주소를 더 추가하고 싶다면 git remote add  추가할 이름 추가주소 순으로 명령어를 내립니다.)




11. 이제 github로 올려보겠습니다. 명령어는 git push -u "remote 저장 이름"  "branch 이름"  입니다.

$git  push -u origin master 

(10번에서 지정한 origin 주소로 master 브랜치를 올리시오. 입니다.)

정상적으로 올라갔습니다.





12. github 에서 확인해 보면 정상적으로 올라간것을 확인할수 있습니다. 소스 및 commit까지 정상적으로 올라갔습니다. 










저작자 표시
신고

WRITTEN BY
No.190
세계정복의 시작점

받은 트랙백이 없고 , 댓글  2개가 달렸습니다.
  1. git pull 하는 내용도 있어야겠네요.
    • 댓글감사합니다!
      정말 pull 에 대해서 포스팅을 않했네요?;
      clone 만 쓰고;; 바로 포스팅 하겠습니다!!
      의견 감사합니다!!!
secret

git의 branch는 버전관리라고 생각하면 된다.(로컬에서는 소스상의 버전, 웹에서는 사용자별로도 나뉠수 있다) 

소스를 1.0 버전과 1.1 버전을 나누는 기준이 바로 branch 기능을 이용한 것이다.




1. 먼저 새로운 branch를 생성하는 방법이다. 명령어는  git branch <branch 이름> 으로 new_branch 를 생성해 보았다.

$git branch new_branch


그리고 모든 branch의 확인은 git branch -a 을 하면 현재 생성된 모든 branch를 확인할수 있으며 현재 활성화된 branch는 아이디앞에 별 모양이 표시 된다.(물론 사용중인 폴더 마지막에 (branch이름)으로 표시된다. 위의 화면에서는 master이 활성화 중이다.)

$git branch -a




현재의 상태를 간략하게 그린 그림입니다. 

branch는 master과 new_branch 가 존재 하며 master 로 text 까지 작업했던 도중 new_branch를 생성했다. 

이에 new_branch에도 text가 존재 하게 되었습니다.




2. 사용중인 branch를 바꾸는 명령어는 git checkout <branch 이름>이다. 새로 생성한 new_branch로 바꿔보았다.

$git checkout new_branch

현재 작업중인 폴더 이름의 옆에도 바뀌었고(~/workspace/git_test (new_branch) 로변경되었다.) 

$git branch -a 명령어로 확인해도 new_branch 앞에 별표 모양이 되었다.








3. new_branch 로 파일을 하나 생성하고(test2.txt) 커밋까지 해보았다.

파일 생성후

$git status 

$git add --all

$git commit -m "new_branch commit."






4. 로그를 보면 앞장에서 했던 커밋로그(first commit.)와 3번에서 했던 커밋로그(new_branch commit.)가 보인다.

$git log




현재 상황은 위의 그림과 같다.

branch는 master과 new_branch 가 존재 하며 master 로 text 까지 작업했던 도중 new_branch를 생성했다. 

이에 new_branch에도 text가 존재 하며, text2를 생성하여 커밋을 날린 상황이된다.






5. branch를 master로 바꿔보았습니다.(new_branch -> master) 그리고 기록된 로그를 보면 하나의 로그밖에 없습니다. 아직 master branch로는 커밋을 한번밖에 하지 않았기 때문입니다.






다시 한번 확인해봤습니다. branch를 master로 변경해 보고 폴더를 확인해봅시다.

해당 폴더에는 test 파일 하나가 존재 합니다.

$git checkout master





branch를 다시 new_branch로 변경해봅니다.

똑같은 폴더인데 폴더에는 new_branch로 커밋했던 test2파일까지 존재 합니다.

$git checkout  new_branch


바로 branch의 변경에 따라 git 에서 자동으로 파일들을 관리하고 있는것을 확인할수 있습니다.






6. 마지막으로 파일 하나를 더 추가해줍니다. branch를 master로 변경한 다음 test3파일을 추가 하였습니다.

파일 test3.txt 추가 후

$git add --all

$git commit -m "master commit"




branch는 master과 new_branch 가 존재 하며 master 로 text 까지 작업했던 도중 new_branch를 생성했다. 

(1번 작업내용 입니다.)

이에 new_branch에도 text가 존재 하며, text2를 생성하여 커밋을 날린 상황이된다. (4번까지의 작업내용입니다.)

다시 master로 브랜치를 변경한다음 text3을 생성하였습니다.(6번까지의 작업 내용입니다.)


이렇게 함으로써 브랜치 계정별로 각각의 버전을 효율적으로 관리할수 있도록 도와줍니다.

또한 브랜치 끼리의 병합 및 사용자 별 브랜치 까지 효과적인 버전관리를 도와줍니다.










저작자 표시
신고

WRITTEN BY
No.190
세계정복의 시작점

받은 트랙백이 없고 , 댓글이 없습니다.
secret

실습 os 버전 : windows (os 마다 다릅니다.)


git설명 : 기트(Git /ɡɪt/[1])는 프로그램 등의 소스 코드 관리를 위한 분산 버전 관리 시스템이다. 빠른 수행 속도에 중점을 두고 있는 것이 특징이다. 최초에는 리누스 토르발스가 리눅스 커널 개발에 이용하려고 개발하였으나, 현재는 널리 사용되고 있다.

Git의 작업 폴더는 모두, 전체 기록과 각 기록을 추적할 수 있는 정보를 포함하고 있으며, 완전한 형태의 저장소이다. 네트워크에 접근하거나 중앙 서버에 의존하지 않는다.


사실 다른 부분에 대해서는 기존의 버전 관리 프로그램(cvs, svn 이 대표적이죠.) 과 기능은 비슷하나 "네트워크에 접근하거나 중앙서버에 의존하지 않는다. " 부분이 중요합니다. 개인이 손쉽게 사용할수 있고(로컬에서 자유롭게) 특정 서버를 운영하지 않아도 된다는 장점이 생깁니다. 


msysgit 설명 : git 자체가 리눅스용으로 개발이 되었습니다. 이것을 윈도우 환경에서 실행하기 위해서 설치되는 프로그램입니다.(윈도우에서 리눅스프로그램을 돌리는것이지요.)


1. 먼저 msysgit 설치. 아래의 주소에서 다운받으실수 있습니다.

window url : http://code.google.com/p/msysgit/downloads/list?can=3

저는 풀버전으로 설치하였습니다.



2. 설치된 git bash를 실행해보면 위와 같은 초기 화면이 나옵니다.



3. 먼저 업로드할 test 폴더를 만들었습니다. 폴더 이름은 git_test

$ mkdir git_test

$ cd git_test





4. 해당폴더 git_test 로 이동후 explorer . 명령어를 내리면 해당 위치에서 탐색기가 열립니다. 





5. 탐색기에서 txt 파일을 하나 만들어봤습니다. 파일명은 test.txt



6. 다시 콘솔로 돌아와서 git status 명령어를 내립니다. 그러면 해당 폴더에서 어떤 파일이 변경되어 있는지 알려줍니다. (잘 않보이시겠지만 빨간 글시로 test.txt 라고 씌여져 있습니다.)

친절하게도 커밋을 할려면 git add <file> 이라고 씌여져 있다.

$ git status


7. git add test.txt 를 하고 다시 git status 를 합니다. commit 이 준비 되었다고 나오는군요.

$ git add test.txt

$ git status


- 추가할 파일이 여러개 일때는 git add -A 혹은 git add --all 해주시면 변경할 모든 파일을 커밋하게 됩니다.




8. commit 를 위해서는 올리는 사람의 email과 name를 적어주어야 합니다. 그렇지 않으면 누가 올린지 모르게 되겠죠?(git의 목적은 소스관리인데 누가 어떤 소스를 언제 올렸는지 모르게 된다면 않되겠죠.)

$ git config --global user.email "사용하는 e메일"

$ git config --global user.name "사용하는 이름"



9. commit를 하면서 넣을 코멘트를 지정합니다. 

$ git commit -m "first commit."



10. 지정한 코멘트를 볼수 있습니다.

$ git log




이제 로컬에서의 기본적인 작업은 여기 까지 입니다. 

요약하자면 

1. 사용할 프로젝트의 디렉토리를 만들고(mkdir)

2. 사용자를 등록해주고

    ( $ git commit --global user.email "사용하는 e메일" , $ git commit --global user.name "사용하는 이름")

3. 파일을 이리저리 수정,생성한다음

4. 파일을 더해주고($ git add --all)

5. 등록해줍니다.(git commit -m "커밋내용")



프로젝트를 진행하면서 여러 버전으로 나뉠경우(버전별로 관리할경우)를 git에서는 branch(나뭇가지) 로 구분합니다. 다음에는 이 branch에 대해서 포스팅하겠습니다.



참조 : http://rogerdudler.github.com/git-guide/index.ko.html









저작자 표시
신고

WRITTEN BY
No.190
세계정복의 시작점

받은 트랙백이 없고 , 댓글  3개가 달렸습니다.
  1. 좋은 정보 감사합니다. ^^
    그런데요.
    순서대로 따라하다가 안되는 부분이 있어서요. 검색해봤더니 변경된건지..
    암튼 이렇게 하면 되길래 글 남깁니다.

    < 사용자 등록 >
    $ git config --global user.email "사용자 이메일 주소"
    $ git config --global user.name "사용자 이름"
    • 댓글 감사합니다.
      오타 났네요. 캡쳐화면에는 정상적으로 햇는데..ㅎ
      말씀하신대로 config 가 맞습니다.
      지적 감사합니다^-^
  2. 검색하다 들어왔어요! 좋은 글 잘 읽었습니다 :)
    제가 블로그에 Git의 원리와 사용법 등을 번역해 둔 게 있는데
    시간 나면 놀러오세요~

    http://blog.naver.com/codeflow_dev/60199030339
secret