본문 바로가기
GIT.GITHUB

[GIT/GITHUB] 깃 '이해'하기 (Revert, Clone, ssh key, Fetch, Pull, Push, 원격 저장소)

by sjs_2215 2019. 8. 13.

출처:

생활코딩 git 강의: https://opentutorials.org/module/3762
sourcetree, git 설치 가이드: https://github.com/egoingsb/git-offline/wiki/Sourcetree
git doc: https://git-scm.com/book/ko/v2/%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0-%EB%B2%84%EC%A0%84-%EA%B4%80%EB%A6%AC%EB%9E%80%3F
버전 관리 도구란?: https://opentutorials.org/course/2482/13915


1. revert

이미 다른 사람에게 공유했거나, 내 실수를 보존해야 할 때 사용.

ex)

c3에서 a를 수정해서 커밋함(c4). 근데 a를 수정한 게 실수여서 a를 다시 빼고 커밋(c5)한 상황일 때.

->

c4에서 c3이로 reset 하면 안 됨. 그러면 공공의 적이 됨!!!

실수를 보전&커밋하면서 이전상태로 돌려야 함

->

c3을 revert

: 사진 참고. +3이 추가되었고, c4에서는 추가된 3을 빼는 것임

여기서 3 way를 접목시켜보면

: c2와 c4를 병합. 근데 여기서 참조하는(base가 되는) 것은 c3


2. 원격 저장소와 연결하기

2.1 clone 하는 법

저장소의 고유한 주소. clone with ssh로 해야 함

이미 있는 저장소를 복제해서 가져오자.

http://egloos.zum.com/thisno/v/4022154

clone 해서 가져온 것은 commit 가능하다. 그러나 push 불가능 (허가된 사용자만 가능)


원격

내 앞에 있는 것이 local. 나를 넘어 있는 것이 remote

local과 remote를 연결시킨다.

업로드 PUSH (로컬에서 리모트로)

  • 백업 달성
  • DROPBOX처럼 어디에서나 일할 수 있는 환경
  • 협업 달성
  • 집에서 일 가능

사진 참고

쳇바퀴 돌며 push pull commit 하는 거임

보안

통신하는 두 가지 방법, htttps, ssh (어떤 통신방법으로 동기화할 것인가)

-어떤 통신방법인지에 따라 주소가 달라짐.

ssh key

비밀번호를 만들고 이거를 올려줘야 함

push 할 때 비번도 같이 보냄. 그럼 받았을 때 비번과 같으면 ok.

ssh key 생성 방법

1. 비번 생성. 계속 엔터 치기

명령어:ssh -keygen

2. ls -al 해보기

키 생성된 폴더 ls 해보면 rsa 파일이 2개가 있.

id_rsa.pub는 public 공개키

id_rsa는 private 비공개 키 - 잃어버리면 안 됨.(인터넷 공개도 안됨)

3. 깃 헙에 등록하기

  • 먼저 깃헙에 등록할 키 복사할 명령어

cat 폴더 경로\id_rsa.pub

  • github.com/settings/keys 사이트로 이동

new ssh key 클릭 후 등록

  • sourcetree에 private key 등록

openssh로 선택


3. 내 저장소를 원격에 올려보자

= push an existing repository from the command line

 

1. 먼저 github.com 가서 repository 생성해주기. 

+ ssh 주소 얻어오기 

 

2. 그 후 밑에 있는 방법 따라하기 

 

  • git cmd로 하는 법
git remote add origin git@github.com:sjs2215/fintech-git-offline-egoing.git
git push -u origin master
  • sourcetree에서 하는 법

원격 저장소는 너야. 별명은 origin이야

지역 저장소가 원격 저장소를 아는 단계까지 옴.

이제 push 하면 됨.

sourcetree에서 push

내 첫 제대로 된 pushㅎㅎ


원격 추적용 branch 생성됨

원격 추적용 브랜치. 기술적으로 차이가 없음.

이걸 보고 알 수 있는 건 = 아 내가 push를 하나 안 했구나라는 걸 알 수 있음.

전:

후:


팀원에게 프로젝트 참여 권한 주기

  • repository - settings에서 추가 가능


4. 협업하는 상황을 만들어보자 (left와 right 가 협업하는 상황)

left와 right 둘 다 파일의 다른 부분을 수정했다고 치자.

left 먼저 push 하고 right push 상황일 때

right한테 뜨는 메시지

= 반려됨.

= right야 일단 pull 해봐. 그리고 합병 문제가 있던 말던 네가 알아서 해결하고 다시 push 해.

그 후, right는 fetch, merge 하고 push 해두면,

right가 다 해서 push 했으니까. left는 pull만 하면 됨.

git으로 협업 효과 상승:

commuication 촉진 굳.

push 늦게 한 사람 pull 해서 가져오면 merge 에러 개 많이 뜨고 덤터기 씌어지기 때문에 다들 push를 주기적으로 많이 함. 습관화해야 함 ^_^

push를 나를 위해/조직을 위해 하자

작업 직전에 꼭 pull 하고 시작.


Fetch, Pull, Merge

pull = fetch 한다. origin/master를 가지고 온다.

merge = origin/master와 master를 병합한다.

=> pull = fetch+merge -> pull에는 두 가지 개념이 같이 혼합되어 있다는 것을 알고 있자!!!

다른 방안) fetch 하고 rebase 하는 방법.


Comments