catbook 코린이의 그림일기 코린이(Coding+어린이)의 고통받는 이야기

Git, GitHub에 대해 배워보자

» Study

해당 내용은 유튜브를 보고 정리를 해놨습니다. 출처 : https://youtu.be/Bd35Ze7-dIw

[beginner’s curiosity]Git, GitHub에 대해 배워보자

개발자 입장에서 피할수없다는 Git! 도데체, Git, Github 무엇인가요?

Git 이 필요한 이유

1. 버전관리

  • 소프트웨어라는게 만드는 과정, 운영하는과정에서도 계속 해서 무언가 더하고 고치고 빼고 하는 수정사항들이 발생됨
  • 근데, 나중에 이전 기능이 다시 필요할 수도 있고, 누가 실수로 잘못된 코드를 섞어서 이전 데이터를 복원해야할 떄도 있음
  • 그리고 이러한 내용들을 확인하기위해 코드가 어디가 어떻게 바뀌었는지, 과거 내역을 확인해야 할 수도 있죠.
  • 그렇기 때문에 중간중간 자료를 저장해놔야하는데, 만약 Git 없이 그냥 파일로서 저장을 한다면 곂쳐지는 데이터들이 있음에도 각각의 저장을 하게됨. ( 나중에 언제 필요할지 모르니깐…)

2. 협업

  • 작은 프로젝트는 혼자서도 개발하지만, 대부분의 프로젝트는 개발자들이 여러명이서 협업을 하게됩니다.
  • 소프트웨어 프로젝트라는게 보통 폴더 통째로 있어야 테스트를 진행하는데, 보통 개발자들끼리 일정부분부역을 나눠서 코드 작성진행을 하게됨
  • 그래서 테스트를 하기위해 메일이라던지, 클라우드라던지 파일을 주고 받게 된다면 골치아픈 상황이 발생될수있음
  • 또한 이런 상황은 누가 언제 어디를 어떻게 건들었는지 확인하기가 어려워 뒷처리를 마무리하기도 힘들게 됨

이론

1. 정의: 리누스 토르발스가 개발한 분산형 버전 관리 시스템(VCS).

  • Git 자체는 오픈 소스
  • 저장소는 https://github.com/git/git
  • 라이선스는 GPL

~Git 영어단어 뜻 : 재수없고 멍청한 놈, 자식~

2. Git과 Git-hub차이는?

  • git-hub는 git을 사용하는 프로젝트를 지원하는 웹호스팅 서비스
  • git은 컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 분산 버전 관리 시스템

3. 만들게 된 배경 리누스 토발즈는 리눅스 커널을 관리하는 기존 툴이 엉망인 것에 화가나 Git을 제작 하게되었다. 특히, 리누스는 하도 많이 화가난 나머지, 단 2주만에 완성을 하였다.

4. beginner의 기본 단어 확인

커맨드 라인(Command Line) : git 명령어를 입력할 때 사용하는 컴퓨터 프로그램. 맥에선 터미널

저장소(Repository): 프로젝트가 살(live) 수 있는 디렉토리나 저장 공간

버전관리(Version Control) : 기본적으로, 깃이 서비스되도록 고안된 목적

커밋(Commit) : 깃에게 파워를 주는명령어로, 무슨 일을 했다는 메모를 남기는 기능

브랜치(Branch) : 작업자의 메인 프로젝트의 브랜치를 따와서(branch off), 자신이 변경하고 싶은 자신만의 버전을 만든다. 작업을 끝낸 후, 프로젝트의 메인 디렉토리인 “master”에 브랜치를 다시 “Merge”

5. beginner의 기본 명령어 확인

git init : 깃 저장소를 초기화

git config : “configure”의 준말, 처음에 깃을 설정할 때 가장 유용

git help : 21개의 가장 많이 사용하는 깃 명령어 소환

git status : 저장소 상태를 체크. 어떤 화일이 저장소 안에 있는지, 커밋이 필요한 변경사항이 있는지, 현재 저장소의 어떤 브랜치에서 작업하고 있는지 확인

git add : 파일을 추가하면, 깃의 저장소 “스냅샷”에 포함(저장소에 새 파일들을 추가 안함)

git commit : 깃의 가장 중요한 명령어

git branch : 여러 협업자와 작업하기 위해 자신만의 변경으로 자주 사용

git checkout : 글자 그대로, 현재 위치하고 있지 않은 저장소를 “체크아웃”할 수 있다

git merge : 브랜치에서 작업을 끝내고, 모든 협업자가 볼 수 있는 master 브랜치로 병합할 수 있다.

git push : 깃허브에 변경사항을 “push”한다.

git pull : 깃허브로부터 변경사항을 다운로드한다(“pull”).

5. 예시를 갖고 설명을 해보자면 Git을 이용한 프로젝트라면 프로젝트를 만들 때 만든 파일들이 다 담긴 프로젝트 폴더가 있음 cd (폴더 디렉토리)

그 폴더에서 git을 시작하면 지금부터 이 폴더의 모든 수정 내역들이 저장되는 .git이라는 폴더가 생김 Git init

백업을 위해, 백업에 포함할 파일들을 모두 설정하고 git add -A 이 시점까지는 이러이러한 작업을 진행했다 하는 말을 남깁니다. git commit -m "(작업 수행 내용)” 그러면 이 폴더의 전체 내용들이 박제가됨, 이후에도 프로젝트에 의미있는 변화가 있을 때마다 이 작업을 해두면 압축파일로 저장할 때 처럼 전체가 따로 복사가 되는게 아니라 각 버전의 변경사항들만 기록되는거라서 용량을 많이 차지하거나 하지 않음

그리고 만약, 수정사항이 번복되거나 문제가 발생되서 이전 내역을 확인해야한다면, git logs 를 통해 지금까지 박제 내역을 확인 한 다음 박재되었던 과거로 복원을 하면 됩니다. git reset — hard 3r8da0

  • 3r8da0는 로그이름 그러면 수정된 내역들은 복원되고 , 새로 만든 파일들은 삭제, 지웠던 파일들은 복구가 됨

또한 ‘이 기능을 넣을까 말까,’ 하는 다른 가능성의 길을 가지치기를 통해 진행할 수 도 있음 git branch “(브랜치명)” 만약 브랜치 내용을 적용해도 괜찮을 때는 합칠수도 있습니다. git merge “(브랜치명)”

즉, git은 버전 관리를 위한 [소프트웨어] 이고, github은 이 git으로 저장되서 워격 전송된 내역들이 저장되는 공간을 제공하는 서비스! (커피와 커피숍같은 관계)

6. 시작하기 : github.com 가입

참고 자료

https://ko.wikipedia.org/wiki/ https://nolboo.kim/blog/2013/10/06/github-for-beginner/

추후 git 사용법에 대한 실기는 사진과 함께 2부작으로 연재를 하겠습니다.

실기

Jekyll + GitHub Pages 블로그 시작하기(feat.삽질의 시작)

필자는 공부를 위해 Git, GitHub에대해 알아보던 도중, 잘못된 길을 보았고 그렇게 8시간의 시간이 흘렀다. $ gem install bundler jekyll

+) 나름 처음에는 글에 도움될려고 초안도 만들었는데… 1*yWuhgXwwGZFZbbFE1GG0bw 1*hNAHOM0-SVCoBUbXSJ1SKQ

비록 초보자지만 8시간동안 아무리 구글링을 해도 진행이 안되었다는점 그리고 무서운 경고 메세지들로 우선 Stop

주말에 도움을 요청하여 다시 시도해보기로 하였다.

There isn't a GitHub Pages site here

to be continue 주말동안 최선을 다해볼게요…