개발/git

[git] 깃과 깃허브

mabb 2022. 6. 12. 19:16
반응형

 

 

 

[Git&GitHub] 이해를 바탕으로 내용 정리.

수시로 수정 및 업로드예정입니다. 틀린 부분이 있다면 댓글로 꼭 알려주세요! ---------------- 📃깃&깃허브를 사용하는 이유:  버전관리, 백업, 협업  일반 직장인들도 문서관리를 위하여 

mabb.tistory.com

 

GitHub - mbk1991/KH-and-ThisIsJava

Contribute to mbk1991/KH-and-ThisIsJava development by creating an account on GitHub.

github.com

워크스페이스 : KHWorkSpace
하위 프로젝트 : 학원 작성 코드 일별 관리 및 이것이 자바다 등 교재별 프로젝트

 

깃과 깃허브는?


-> 버전관리, 백업, 협업을 위한 도구


본인이 깃과 깃허브를 사용하려는 목적


1. 학원 과정동안 작성할 실습 및 예제 소스 백업.
  이클립스에 만든 학원용 워크스페이스를 통으로 백업하고자 함
2. 학원 및 개인 프로젝트의 버전관리 및 백업.
3. 추후 협업 시 활용.

 

레퍼런스 및 깃 북 , 필요한 모든 내용은 git 홈페이지에 ..

 

Git - Reference

Reference

git-scm.com

 

 

 

Git - Book

 

git-scm.com

깃 레퍼런스와 깃 북에 모든 내용이 다 있다.

 

대략적인 이해

깃은 분산형 버전관리 시스템. 폴더(디렉토리)를 지역저장소(로컬저장소)로 만들고 저장소 내부의 파일을 버전관리할 수 있게하는 기능을 제공한다.
깃허브는 원격저장소 및 커뮤니티. 원격저장소에서 버전관리 및 백업, 협업이 가능하다.

버전관리

깃은 저장소 내에서 무언가 수정된 후의  순간을 스냅샷처럼 저장한다. a_version1.txt -> a_version2.txt 로 파일 자체를 저장하는 것이 아니라  a.txt를 수정한 후의 순간을 커밋(commit, 수정 후의 시점을 버전으로 만듦)하고 해시로 기록한다. 저장소 내부가 수정된 후의 시점을 스냅샷으로 깃 저장소에 저장한다. 분기와 병합 (branch, merge) , checkout, revert, reset 등으로 버전을  관리한다.

버전관리 방식
1)워킹트리 2)스테이지 3)git 저장소(repository)의 공간이 있다.

1. 파일이 수정됨 Modified
2. 수정된 파일에 대한 정보를 준비시킴 Staged
3. 파일이 수정된 시점을 스냅샷처럼 저장소에 저장 Committed
4. 병합 및 분기, 이전 커밋 회귀, 삭제 등의 관리

백업

지역저장소와 원격저장소(깃허브) 를 연동하여 push(업로드) 및 pull(다운로드) 한다.

협업

원격 저장소를 공유하여 협업 편리

<사용방법  정리>

ㅇ지역저장소를 원격저장소에 백업하기(최초)
 1. 이클립스 워크스페이스 폴더를 깃 저장소로 만들기 $ git init
 2. 깃허브 원격 저장소와 연동 $ git remote add origin <깃허브 주소>
 3. 저장소 내부 변경 시 스테이징 및 커밋 $ git add . // $ git commit -m " 커밋 메시지"
 4. 원격 저장소로 push $ git push -u origin master(최초)  이후 $ git push

ㅇ평소 백업 시
1. git bash 실행
2. pwd 확인 한 번 해줌
3. cd 명령어로 원격저장소와 연결된 지역저장소 디렉토리로 이동
4. git add .
5. git commit -m "yyyy_MMdd hh:mm"
6. git push


ㅇ버전관리 브랜치 
-$ git branch
-$ git log -> 소스트리 gui로 보는 것이 편리.
-$git reset / revert
-$git switch 
-$git restore


ㅇ협업
1. 개인 원격저장소에 협업자를 추가하여 협업하는 방법
-결과물이 개인의 리포지토리에 귀속되므로 학원 팀플로는 불합리해보임.


2. 팀원 각각 공용 리포지토리를 fork하고 fork한 리포지토리를 통하여 원격 저장소에 협업하는 방법

<깃 & 깃허브 활용 기록>

ㅁ노트북 내 워크스페이스 폴더를 지역저장소로 만들고 깃허브의 원격저장소와 연동
->깃 배쉬 실행, (최초) 사용자명과 이메일 등록 
->현재 작업 디렉토리 확인 $ pwd
-> 이클립스의 워크스페이스 폴더 이동  $ cd .. / cd <디렉토리명> 등을 이용
-> 깃 지역저장소로 만듦 $ git init
-> 파일 상태 확인 $ git status  / $ git diff
-> 스테이징
-> 커밋
-> 원격 저장소와 연결 (최초)
-> 업로드

ㅁ학원 수업에 노트북 어댑터를 안 가져온 상황이 발생.
->학원 이클립스로 소스파일 작성
->깃허브 원격저장소에 파일 업로드 
->노트북으로 다운로드 : (연동된 지역저장소에서) $ git pull origiin master 명령

ㅁOracle SQL 원격저장소 백업 하기.
->워크스페이스 상위폴더를 지역저장소로 이용.
->SQL 저장 폴더 지역저장소로 이용.

 

 

<깃 & 깃허브 알아보아야 할 기능 >

ㅁ원격저장소에 만든 프로젝트 디렉토리를 지역저장소로 pull했을 때 이클립스에서 인식이 될 지

ㅁ학원 pc에서 깃허브에 접속, 깃허브에서 디렉토리(자바프로젝트용) 을 만들고 학원 pc 프로젝트 하위의 src 폴더를 업로드함. 노트북으로 pull하여 다운로드 받고 이클립스에 자바 프로젝트로 오픈하여줌.
-> 노트북에서 작성한 코드를 스테이징 및 커밋 후  push하자 에러가 남. 깃허브의 폴더와 지역저장소의 폴더가 통합되지 않은 것으로 판단.  fetch 및 merge하는 방법을 알아보던 중 pull을 하면 merge가 된다는 내용을 보고 다시한번 pull 진행 후 push 하자 업로드 됨. 써놓고도 뭔 말인지 . pull, push,fetch,merge에 대해 더 제대로 이해할 필요가 있음.

ㅁ학원 프로젝트를 위하여 협업 및 버전관리 기능을 사용하여야 할 때가 왔음.
-> 협업 및 버전관리 사용법 정리하고 팀원과 공유할 것.

<협업 >  -> 공용계정을 이용한 fork 방식이 더 나을 것이라고 판단함.
1. (팀장)지역저장소 생성 및 원격 저장소 연동 및 테스트파일 push
2. (팀장)깃허브에서 Settings-Collaborators 초대
3. (팀장과 팀원) 이름과 이메일 설정
4. (팀원) 원격 저장소의 클론 생성 및 지역저장소에 pull
5.(팀장과 팀원) 번갈아가며 pull과 push, pull request 검토 후 병합.


<협업 방식>
보통 협업시 작업자마다 브랜치를 만들어서 진행하고 작업 중간중간 pull request를 보내서
master 브랜치에 병합하는 식으로 진행한다고 한다. 깃허브로 협업을 할 때는 항상 다른 작업자의
변경 내용을 바로 반영하기 위해 pull(fetch)부터 한 다음 자신의 작업을 진행해야 한다.

<협업 시 브랜치 관리>
1.다른 팀원의 커밋이 있는지 pull(fetch)로 확인
2.브랜치를 생성하고 브랜치로 이동
3.해당 브랜치에서 작업 후 커밋
4.원격 저장소에 새로만든 브랜치를 공용 원격저장소의 작업 브랜치에 push
5. pull request를 협업자들이 확인한 후  master브랜치에 병합

-220805 학원컴퓨터로 테스트
: $git clone 깃허브 주소 로 클론지역저장소를 만듦
->커밋을 시도하자 이메일과 이름을 입력하라는 안내가 나옴
->이메일과 이름 입력 후 푸쉬를 시도하자 깃허브 로그인 창이 나옴
->콜라보레이터 또는 본인이어야 푸쉬가 가능한 것.

 

-무료계정 협업 최대 3명인 줄 알았으나 책의 내용이 예전 내용이었음. 20.4 이후 협업자 제한 해제
-checkout 명령어도 restore, switch 로 구분됨

 

FAQ about changes to GitHub’s plans - GitHub Docs

What plans and pricing changes did GitHub announce on April 14? GitHub announced the following plans and pricing changes: GitHub Free for organizations is immediately available and includes private repositories for unlimited users All organizations previou

docs.github.com

 

 

 

 

 

 

 

 

반응형

'개발 > git' 카테고리의 다른 글

[Git&GitHub] 이해를 바탕으로 내용 정리.  (0) 2022.08.18