codestates / codestates/ds-blog

[조보현] of DSFT 5일차(200901) :Git, GitHub가 뭐에요?

Open
#71 4 comments 0 reactions 0 assignees View on GitHub
tech
Dominant language
No language data
Stars
2
Forks
4
PR merge metrics
No merged PRs in 30d

Description

[임시용 블로그](https://medium.com/@qhgus5/beginners-curiosity-git-github%EC%97%90-%EB%8C%80%ED%95%B4-%EB%B0%B0%EC%9B%8C%EB%B3%B4%EC%9E%90-e4d9904ba7ac)

# [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](https://user-images.githubusercontent.com/70356749/92236384-47a85f80-eef0-11ea-9986-60ee6d9e8928.png)

_+) 나름 처음에는 글에 도움될려고 초안도 만들었는데…_
![1*yWuhgXwwGZFZbbFE1GG0bw](https://user-images.githubusercontent.com/70356749/92236499-7e7e7580-eef0-11ea-86a3-651cc134d25a.png)
![1*hNAHOM0-SVCoBUbXSJ1SKQ](https://user-images.githubusercontent.com/70356749/92236504-7fafa280-eef0-11ea-8f32-9b6e2da57fd7.png)

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

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

![There isn't a GitHub Pages site here](https://user-images.githubusercontent.com/70356749/92236552-9b1aad80-eef0-11ea-91a0-e5d4395944e9.png)
![hint You've added another git repository inside your current repository](https://user-images.githubusercontent.com/70356749/92236557-9ce47100-eef0-11ea-9c13-242500680304.png)

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

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.