Git





잘만되던 깃허브였는데 다른 깃허브 계정 만들어서 하려고 하니까 이런게 뜬다.



Push failed: Failed with error: fatal: unable to access 'https://github.com/.../.....git/': The requested URL returned error: 403



찾아보니 ssh 키 등록을 해야 한다고 하는데



뭔소린지..



참고로 안드로이드 스튜디오 깃허브 설정은 밑 링크를 따라함

http://itpangpang.xyz/164


remote 주소를 ssh 주소로 변경한다.


깃허브에서 ssh 주소를 복사

저장소 우측 clone or dowload 클릭 후 Use ssh 클릭하면 ssh 용 git@로 시작하는 주소가 나온다




해당 프로젝트 우클릭해서 git Bash Here를 클릭




git remote -v 를 입력하여 현재 주소를 확인 https 로 되어있으면 변경해야한다.


변경 명령어는

git remote set-url origin [ssh주소]



변경 후 다시 git remote -v를 해서 확인한다.




그리고 ssh 키 존재를 확인해야 한다.


아래 명령어를 따라한다.




ssh키가 없다면 생성한다. 본인 이메일 입력


ssh-keygen -t rss -b 4096 -C "test@test.com"



키 확인 후 vi 편집기에서 아래와 같이 복사한다.





깃허브 로그인 후 setting 진입 

아래와 같이 수행



그럼 ssh key완료 끝


이제 푸쉬를 해본다.







원인이 뭔지 모르겠다

사내망이라 보안관련 문제인가?

이거저거 찾아보다가 ssh 관련해서 rsa,dsa 파일 만드는 방법이 있길래 적어본다.

github 로그인하면 ssh 키 등록하라고 어쩌구 뜨길래 관련해서 뒤져봤었다.


ssh 어쩌구 뜨는데 저 파일이 컴퓨터에 없었다.

그래서 이클립스에 들어가서 보는 법을 찾아서 따라해보았다.

Windows > preferences > General > NetWork Connection > SSH2 에 가본다.

그럼 아래와 같은 화면이 뜬다.



근데 내 컴퓨터에는 .ssh 폴더가 존재하지 않는다.

일단 오른쪽 하단 Apply를 눌러본다.

그럼 만들겠냐고 창이 뜬다. Yes



그럼 폴더가 만들어진다.





이제 id_dsa. id_rsa 파일이 없으므로 키 생성을 해야한다.

Key Management 탭을 누른다.




Generate DSA Key를 누르면 키가 생성된다. 



우측 하단 Save Private Key를 눌러 파일을 .ssh 폴더에 저장한다.



방금 만든 .ssh 경로에 저장한다.




RSA 키도 마찬가지로 생성한다.


이제 다 마치고 Apply 를 누른 후 OK로 Preferences를 빠져나온다.





git 명령어 정리

2013.09.26 15:53






#기본


git init

git clone 저장소주소 폴더명


지정한 커밋의 로그메세지를 수정

git commit -C HEAD -a --amend


변경내용 되돌리게..

git checkout -- 파일명


인덱스에 스테이징한거 취소(add한거)

git reset HEAD <file>


터미널에서 컬러로 나오게

git config --global color.ui "true";


환경변수보기

git config --global --list




#Stash

unstaged상태의 파일을 일시적으로 백업하고 워킹디렉토리를 깨긋하게유지(아직 커밋하면 안되는 작업중에 pull받아야하는데 그때 충동이 일어날경우…작업도 안됬는데 중간에 커밋하고 풀하는건 안좋다 이때 stash사용)

git stash

git stash pop //복구

git stash apply //스태시에서 제거하지않고 복구

git stash list

git stash show stash이름




#브랜치


브랜치 조회

git branch


새브랜치

git branch 브랜치명


브랜치 삭제

git branch -d 브랜치명


브랜치 이름변경

git branch -m 존재하는브랜치명 새로운브랜치명


태그붙이기

git tag 태그명 브랜치명


해당브랜치나 태그로 체크아웃

git checkout 브랜치명/태그명


해당 브랜치를 현재 브랜치로 합침

git merge 브랜치명


해당 브랜치의 변경사항을 현재 브랜치에 적용

git rebase 브랜치명




#로그관리

해당 파일의 마지막 변경 상세 이력을 볼수있다.

git blame 파일명


이전 커밋 취소

git reset 커밋명

git reset HEAD^ //최근1개의 커밋취소

git reset --hard HEAD 변경사항무시 마지막커밋 복구


커밋상세 정보를 보여준다.

git show 커밋주소




# 소스비교

영역 구분

워킹 트리 working tree (workspace)

인덱스 index (planned tree, staging area)

로컬 브랜치(현재 브랜치) local branch[local repository]

리모트 트래킹 브랜치 remote tracking branch[local repository] : 리모트 브랜치를 로컬에서 참조가능(fetch 명령으로 갱신)

리모트 브랜치 remote branch[remote repository]


1. 워킹 트리 → 인덱스

git status : 워킹트리에서 아직 인덱스에 add되지 않은 파일내역

git diff : 워킹 트리와 인덱스간 소스내용 차이점

git diff <파일> : 해당 파일에 대한 워킹트리와 인덱스간 소스내용 차이점


2. 인덱스 → 로컬 브랜치

git status : 인덱스에서 아직 commit되지 않은 파일내역

git diff --cached : 인덱스와 로컬브랜치(HEAD) 간의 차이점. "commit" 명령을 수행할 경우 반영되는 내용들


3. 워킹 트리 → 로컬 브랜치

git diff HEAD : 워킹 트리와 로컬 브랜치(HEAD)의 소스내용 차이. 마지막 commit 이후 변경사항. 

                     "commit -a" 명령을 수행할 경우 반영되는 내용들

git diff HEAD -- <파일> : 해당 파일에 대한 워킹트리와 마지막 commit 이후의 소스내용 차이점


4. 워킹 트리 → 리모트 브랜치

git diff FETCH_HEAD : 워킹 트리와 리모트 브랜치(FETCH_HEAD)의 소스내용 차이점

git diff FETCH_HEAD -- <파일> : 해당 파일에 대한 워킹 트리와 리모트 브랜치 소스내용 차이점


5. 로컬 브랜치 → 리모트 브랜치 : Outgoing Changes

git log FETCH_HEAD.. : 로컬 브랜치에서 리모트 브랜치에 반영할 변경내역(커밋기록)

git diff FETCH_HEAD... : 로컬 브랜치에서 리모트 브랜치에 반영할 소스 변경내용 


6. 리모트 브랜치 → 로컬 브랜치 : Incoming Changes

git log ..FETCH_HEAD : 리모트 브랜치에서 로컬 브랜치로 가져와야할 변경내역(커밋기록)

git diff ...FETCH_HEAD : 리모트 브랜치에서 로컬 브랜치로 가져와야할 소스 변경내용





#원격저장소


원격저장소의 변경사항을 가져와서 브랜치를 갱신

git fetch


새로운 원격저장소 추가

git remote add 이름 저장소주소


원격 저장소 목록확인

git remote


해당 원격저장소의 정보를 볼 수 있습니다.

git remote show 이름


원격저장소를 제거합니다.

git remote rm 이름



개별파일 원복

git checkout  -- <파일> : 워킹트리의 수정된 파일을 index(staging area)에 있는 것으로 원복

git checkout HEAD -- <파일명> : 워킹트리의 수정된 파일을 HEAD에 있는 것으로 원복(이 경우 --는 생략가능)

git checkout FETCH_HEAD -- <파일명> : 워킹트리의 수정된 파일의 내용을 FETCH_HEAD에 있는 것으로 원복? merge?(이 경우 --는 생략가능)

 

index 추가 취소

git reset -- <파일명> : 해당 파일을 index(staging area)에 추가한 것을 취소(unstage). 워킹트리의 변경내용은 보존됨. (--mixed 가 default)

git reset HEAD <파일명> : 위와 동일

 

commit 취소

git reset HEAD^ : 최종 커밋을 취소. 워킹트리는 보존됨. (커밋은 했으나 push하지 않은 경우 유용)

git reset HEAD~2 : 마지막 2개의 커밋을 취소. 워킹트리는 보존됨.

git reset --hard HEAD~2 : 마지막 2개의 커밋을 취소. index 및 워킹트리 모두 원복됨.

git reset --hard ORIG_HEAD : 머지한 것을 이미 커밋했을 때,  그 커밋을 취소. (잘못된 머지를 이미 커밋한 경우 유용)

git revert HEAD : HEAD에서 변경한 내역을 취소하는 새로운 커밋 발행(undo commit). (커밋을 이미 push 해버린 경우 유용)

 

워킹트리 전체 원복

git reset --hard HEAD : 워킹트리 전체를 마지막 커밋 상태로 되돌림. 마지막 커밋이후의 워킹트리와 index의 수정사항 모두 사라짐. 

                                  (변경을 커밋하지 않았다면 유용)

 

 

* 참조 : reset 옵션

--soft : index 보존, 워킹트리 보존. 즉 모두 보존.

--mixed : index 취소, 워킹트리만 보존 (기본 옵션)

--hard : index 취소, 워킹트리 취소. 즉 모두 취소..


  1. LHN 2015.07.09 10:17 신고

    정말 잘 정리되어있네요 !!!! 좋은 정보 감사합니다~~
    퍼가도 될지요 =ㅅ=

git 사용법

2013.09.26 14:43


아무리 해도 어려워...




잘 설명되어 있으나 내가 이해못하는 관련 링크들


완전 초보를 위한 깃 허브

http://nolboo.github.io/blog/2013/10/06/github-for-beginner/


git 간편 안내서

http://rkjun.github.io/git-guide/index.ko.html


git 사용가이드

http://www.slideshare.net/dhrim/git-12030742


git 사용법

http://kimseunghyun76.tistory.com/116



퀴즈로 알아보는 배우기 쉬운 git 브랜치 매뉴얼

http://learnbranch.urigit.com/?demo



개발자를 위한 고급 Git 활용전략

http://h3.paran.com/2011/session/advanced-git-tutorial.html


깃 입문

https://backlog.com/git-tutorial/kr/stepup/stepup1_1.html




  1. 김병국 2014.04.03 15:50 신고

    좋은 정보 고맙습니다.
    git 한번 사용할려고 하는데, 감이 안 잡히네요.
    by http://linuxtip.net

    • yonoo88 2014.04.03 17:42 신고

      도움이 되셨다니 다행이네요

      저도 커밋 푸쉬 정도만 하고 나머지는 무서워서 안 쓰게 되더라구요.

      쓸 일이 없어서 일 수도 있지만요 ㅋㅋ

  2. LHN 2015.07.09 10:18 신고

    좋은정보 감사합니다 =ㅅ=!!! 한참 공부중이라 명령어 찾다가 들려요~

+ Recent posts

티스토리 툴바