Before 2020/프로젝트

생활코딩의 Git 과 Git hub - GIT 3 강의정리

부루기 2020. 1. 12. 20:15
728x90

https://happyhyunwoong.tistory.com/45

 

생활코딩의 Git 과 Git hub - GIT 1,2 강의정리

>https://www.inflearn.com/course/git-2# 버전 관리 시스템 Git - 인프런 이 수업은 버전관리 시스템 git을 소개하는 수업입니다. 초급 교양 개발도구 버전관리시스템 깃(GIT) 온라인 강의 Git www.inflearn.com..

happyhyunwoong.tistory.com

>앞의 강의 정리와 연결되는 영상입니다. 

 

  • 백업은 반드시 필요하다. 서버용 컴퓨터가 존재하기는 한다.

 

  • local repository= 내 컴퓨터
  • remote repository = 서버용 컴퓨터
  • push= 내 컴퓨터에 서버용 컴퓨터에 넣어주는 것
  • clone=서버용 컴퓨터의 내용을 내 다른 컴퓨터에 복사하는 것
  • pull=내 컴퓨터에서 서버용 컴퓨터에서 업데이트 된 내용을 업데이트 하는 것

 

  • 서버용 컴퓨터를 대여해주는 곳 git hosting
  • 나는 git hub가 있지만 git lab이 존재한다. git lab은 비공개 파일을 무료로 사용할 수 있음

 

  Local->Remote Remote->Local
HTTP    
SSH 보안도 좋고 사용하기도 좋음 하지만 복잡함  
  • git 첫번째 강의와 비슷한 내용이라 따로 쓰지 않고 넘어간다.
  • 많은 오픈소스를 사용할 수 있게 된 것이다. git 의 source 링크 받고 우리가 git을 수정할 수 있다.
  • 여기서 내가 원하거나 채용해야할 코드들을 얻어올 수 있다.
  •  issue tracker 프로젝트의 문제를 여기서 표현할 수 있고 사용하기 좋다.

>WEB3 Branch & conflict

 

https://www.inflearn.com/course/git-2/lecture/22252

 

버전 관리 시스템 Git - 인프런

이 수업은 버전관리 시스템 git을 소개하는 수업입니다. 초급 교양 개발도구 버전관리시스템 깃(GIT) 온라인 강의 Git

www.inflearn.com

  • 같은 뿌리에서 나왔지만 다른 버젼이 생기는 것을 branch라고 한다.
  • 그중 merge를 하는 과정에서 conflict가 생긴다.
  • 기본 branch= master
  • HEAD = 현재 브랜치
  • 헤드를 다른 곳으로 옮기는 행위를 checkout
  • 공통의 조상 커밋을 base라고 한다.
  • merge = 같은 base에서 나온 branch를 합치는 것을 의미한다.
  • 복제의 주체가 중요하다.
  • 같은 파일의 다른 부분을 다른 브랜치에서 자동으로 겹치지 않게 넣어준다.
  • 같은 파일의 같은 부분을 병합할 경우는 충돌이 일어난다. 따라서 커밋되지 않고 오류가 뜨는데 오류가 난 파일에 들어가보면 이와 같은 형태를 띄고 있다.
#title
content

<<<<<<< HEAD
master
=======
opentutorials
>>>>>>> opentutorials

#title
content

여기서 HEAD는 현재 브랜치의 상태를 말하는 것이고

=====뒤의 내용이 병합될 예정이였다는 것을 의미한다.

Q:그렇다면 어떻게 해결하는가?

#title
content

master, opentutorials

#title
content

이렇게 직접 수정을 하고 '해결된것으로 표시함' 으로 하거나

master 이나 opentutorial 둘 중에 하나만 직접 선택하는 것도 가능하다.

 

1. 직접 고치기

2. 둘 중 하나로 선택

 

이렇게 되면

커밋 메세지에 해결되었음을 알려주는 문구가 들어가게 된다.

  • 다양한 충돌의 예 3 way conflict
here there base 2 way merge 3 way merge
A A A A A
H B B conflict H(here 만 수정되었음)
C T T conflict T(there 만 수정되었음)
H T T conflict conflict
  • 3 way merge를 통해서 3개중에서 1개만 변경사항이 있을 경우에는 그것만 바꿔서 넣어준다.
  • merge tool를 통해서 병합도구로 할 수 있다. 나는 지금 쓸 필요는 없을 것 같다. P4Merge를 사용했다. 이것도 외부 저장소로 지정해서 사용할 수 있다.
  • git work flow -> git flow(브랜치의 모범사례 모음)
  • cherrypick - 전 버젼의 커밋을 병합하는 병합 기술
  • rebase - 병합과 비슷한 것이지만 타임라인이 깔끔함
  • HEAD를 통해서 현재 상태의 브랜치와 버젼을 알 수 있다.
  • HEAD가 브랜치가 아닌 버젼을 checkout을 통해서 향하고 있다면 그 상태를 detached 상태라고 한다.

>CHECKOUT vs RESET

  • checkout은 head를 방향을 바꾼다. 바꾸는 느낌이라고 생각하기
  • reset는 브렌치의 방향을 바꾼다.

>총평

  • 이해하기 정말 쉬운 강의였다.
  • 강의수는 많아도 길어도 10분안의 강의이므로 부담없이 들을 수 있었다.
  • 물론 짧은 강의의 연속이기에 깊이는 굉장이 얕을지 모른다 하지만 우리한테 필요한 건 하나의 깊은 우물이 아니라 넓게 볼 수 있는 얕은 호수가 필요하다. 따라서 알맞은 강의를 잘 들었다고 생각한다.
  • 다음은 이렇게 배운 내용을 활용해볼 프로젝트를 직접해보는 것이다. -> Nomad Coder의 무료 프로젝트를 해볼 예정이다. 
728x90