| 일 | 월 | 화 | 수 | 목 | 금 | 토 | 
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 | 
| 9 | 10 | 11 | 12 | 13 | 14 | 15 | 
| 16 | 17 | 18 | 19 | 20 | 21 | 22 | 
| 23 | 24 | 25 | 26 | 27 | 28 | 29 | 
| 30 | 
- 이산신호처리
 - 코테준비
 - PYTHON
 - DSP
 - Leet Coding Challenge
 - leet code
 - 카카오 코딩테스트
 - Trie
 - 스위프트
 - 코테
 - SWIFT
 - IOS
 - 릿코드
 - 독서노트
 - 알고리즘문제풀이
 - 신호처리
 - 컨볼루션
 - leetcode
 - dft
 - DTFT
 - 전자공학
 - backjoon
 - 프로그래머스
 - SWIFTUI
 - 백준
 - 코딩테스트
 - 알고리즘
 - 알고리즘 문제풀이
 - 파이썬
 - 트라이
 
- Today
 
- Total
 
매일 매일 성장하는 섭섭군
Git&GitHub 알아보기 본문
Git 과 GitHub는 무엇일까?
Git은 버전관리시스템(VCS, Version Control System) 프로그램입니다.
GitHub는 Git을 업로드 할 수 있는 웹사이트 중 하나입니다.
그렇다면 버전관리시스템이란 무엇일까요? Git이 메인이니 간략하게 설명하도록 하겠습니다.   
✓ 버전관리시스템(VCS, Version Control System)
버전관리시스템이란 말 그대로 버전을 관리하는 시스템입니다. 이력서, 자기소개서, PPT등 서류 작업을 할때 이런 제목들을 사용해 보신 적이 있나요?
"최종 발표 PPT.pptx"
"진짜 최종 발표 PPT.pptx"
"진짜진짜최종 발표 PPT.pptx"
"이게 진짜최종 발표 PPT.pptx"딱 봐도 뭔가 최종으로 완료된 PPT인지 햇갈립니다. 이러한 것을 다음과 같이 바꾸면 어떨까요??
"발표_PPT_ver1.0.pptx"
"발표_PPT_ver1.1.pptx"
"발표_PPT_ver1.2.pptx"
"발표_PPT_ver2.0.pptx"이런식으로 버전을 구분해서 작업한다면 최종으로 완료된 PPT가 무엇인지 한눈에 알 수 있습니다.
게다가 시간의 흐름에 따른 진행 사항을 확인 할 수 있습니다.  
위 예시를 보고 버전관리가 필요하다라는 것을 알수 있다.
버전관리시스템은 위에서 보여준것 보다도 더 많은 일을 할 수 있다. 
- 백업 및 복구 : 사고로 내용이 날아가거나, 무언가가 잘못되었을 때 다시 이전의 내용으로 복구할 수 있다.
 - 버전 관리 : 시점에 따라 확인이 가능하다.
 - 변경점 관리 : 누가, 언제, 무엇을, 어떻게 변경했는지 알 수 있다.
 - 협업 : 같이 일하는 사람에게 수정사항을 쉽게 공유 할 수 있고, 복사후 동시다발적으로 개발이 가능하다.
 
✓ Git
Git은 "분산형 버전 관리 시스템" 입니다. 뭔가 이름부터 협업하기 좋을것 같은 느낌이 들지 않나요?
개발자들은 각자 개발을 진행 한 후에 개발한 것을 합칠지? 아니면 합치지 않을지? 결정할 수 있습니다.
또한 서버에 접속하지 않으면서도 작업을 진행할 수 있습니다.
대표적인 Git 명령어들을 보면서 어떠한 기능이 있는지 확인 할 수 있습니다.
변경된 사항 받아오고 변경한 사항 올리기
- Clone : 원격 Git 저장소로부터 데이터(버전정보) 내 컴퓨터(로컬저장소)로 가져오기 
- Pull : 원격저장소에 있는 최신 버전정보 가져와서 내 로컬저장소와 병합하기
- Commit : 파일 및 폴더의 추가/변경 사항을 기록하기
- Add : commit 할 파일 및 폴더 선택하기
- Push : 내 컴퓨터에 있는 데이터(버전정보)를 원격 Git 저장소에 업로드하기 
독립적으로 개발하고 병합하기
- Branch : 독립적으로 개발 할 수 있도록 해당 시점으로 부터 데이터(버전정보 복사)
- Pull Request : 독립적으로 개발한것 합칠 수 있도록 승인 요청하기
- Marge : Branch로 진행한 것 병합하기✓ GitHub
GitHub는 Git을 저장할 수 있는 원격저장소(서버)입니다. 즉, 개발자들의 버전제어 및 협업을 위한 플랫폼입니다.
Github 이외에도 다양한 서버들이 있으며 직접 구축하여 사용도 가능합니다.  
정리하면서
Git에 대해서 아주 일부만 사용하고 있다고 느꼈다. 추후 회사에 들어가 협업을 원활하게 하기 위해 좀 더 공부를 진행해야 겠다.
공부하기에 좋은 링크
참고 페이지
https://blog.naver.com/opusk/220984046181
https://namu.wiki/w/버전%20관리%20시스템
https://backlog.com/git-tutorial/kr/
'개발관련 > 개발상식' 카테고리의 다른 글
| Bitbucket Self Hosted Runner(Window) Guide (0) | 2022.07.04 | 
|---|---|
| Jenkins Install 방식 알아보기(서비스 형태, WAR 형태) (0) | 2022.06.29 | 
| 오픈소스 소프트웨어 라이센스와 종류 (0) | 2020.08.08 | 
| 일급객체(First Class Citizen)이란? - with Swift (0) | 2020.08.08 | 
| 함수형 프로그래밍이란? (0) | 2020.08.08 |