[깃(git),깃허브(github)] - 기초

CodeByHan·2024년 10월 13일
2

깃허브

목록 보기
1/6

깃(git)

깃(git)

  • 깃은 대표적인 분산 버전 관리 시스템(DVCS)

깃의 작업 영역

작업 공간

  • 현재 작업하고 있는 공간인 폴더를 말한다.
  • 깃은 사용자가 명시적으로 git add 명령을 실행할 때까지 이 영역에서 빌생하는 파일 변경 및 삭제 등의 상태 변화 추적 X

스테이징 영역

  • 작업 공간에서 발생한 상태 변화 중 실제 내부 저장소에 변경 이력으로 남길 작업을 선정하는 공간
  • 작업 공간에서 -> git add -> 스테이징 영역 올리기

내부 저장소

  • 스테이지 영역에서 git commit 명령을 통해 이동하는 영역으로 [.git] 폴더를 말함
  • git commit은 스테이징 영역에 있는 파일의 변경 이력을 스냅숏으로 만들어 저장하는 명령어로,이를 '저장소에 커밋한다' 라고 함

스냅숏(snapshot)
스냅샷은 특정 시점의 프로젝트 소스 코드의 특정 버전을 의미한다. 프로젝트에 변경 사항을 저장(commit, 커밋)하면 변경 사항을 포함하여 해당 시점에 프로젝트의 소스 코드 스냅샷이 생성된다. 이러한 스냅샷은 프로젝트의 버전 기록을 형성하며, 프로그래머가 시간의 경과에 따른 코드의 변경 사항을 추적하고 관리할 수 있도록 한다. 필요한 경우 이전 버전으로 되돌릴 수 있도록(roll-back, 롤백) 하기 때문에 버전 관리 프로세스의 중요한 부분이다.

깃허브(Github)

깃허브(Github)

  • 대표적인 외부 저장소로,깃으로 관리하는 프로젝트를 업로드할 수 있도록 웹 기반 저장소를 생성하고 관리하는 서비스

수정 및 반영: 수정 후, git add, git commit, git push로 원격 저장소에 반영
수정 내역 가져오기: 원격 저장소의 수정 내역을 git fetch로 가져온 후, git merge로 병합
git pull: fetch와 merge를 한 번에 처리하는 명령어

깃 초기화

git init

전체 파일 스테이징 영역으로 이동

git add .

특정 파일만 스테이징 영역으로 이동

git add 특정파일

스테이징 영역에 있는 파일의 변경 내용을 스냅숏으로 저장

git commit -m '커밋 메시지'

해당 저장소의 커밋과 관련된 모든 작업 이력 보기

git reflog

내 컴퓨터의 프로젝트 폴더와 깃허브 간 연결 통로 만들기

git remote add 별칭(ex)origin) 외부저장소 주소

연결 통로 변경하기

git remote set-url origin 바꾸고자 하는 외부저장소 주소

만들어진 통로를 통해 깃허브로 자신의 프로젝트 업로드 하기

git push  별칭(ex)origin) 브랜치이름(main or master)

깃허브에서 파일 가져와 작업

git clone 외부 저장소 주소
git pull 외부 저장소 주소
  • git clone : 깃이 내 컴퓨터의 특정 폴더를 관리하도록 선언하는 것과 동시에 깃허브에서 프로젝트를 내려받아 동기화하는 작업 수행

  • git pull : 이미 내 컴퓨터의 특정 폴더를 깃으로 관리하고 있는 상태에서 깃허브 프로젝트와 동기화만 수행

  • 깃허브에 저장된 프로젝트를 처음 내 컴퓨터로 내려받을 때 -> git clone = git init + git pull
  • 이미 깃으로 프로젝트를 진행하면서 버전 관리를 수행하던 상황에서 깃허브의 최신 변경 사항을 반영할 때 -> git pull

브랜치(Branch)

브랜치(Branch)

  • 동일한 프로젝트에 대해 각 개발자가 독립적으로 작업을 수행하기 위해 사용하는 개념
  • Git에서는 기본적으로 master라는 브랜치가 있고, 그 브랜치에서 새로운 브랜치를 만들어 작업을 진행할 수 있다.새로운 브랜치를 만들면 master랑 따로 놀면서 코드를 변경 가능. -> 브랜치마다 독립적인 작업 공간
  • 작업이 끝나면 merge를 통해 그 브랜치의 변경 사항을 master에 반영하면 되는데, 이렇게 하면 여러 작업을 동시에 처리하면서도 코드의 안정성을 유지 가능
// 브랜치 확인, 로컬 저장소 브랜치 목록
 git branch

// 원격 저장소에서 정보 가져오기
 git fetch --all

// 원격 저장소 브랜치 목록
 git branch -r

// 로컬, 원격 저장소 브랜치 목록
 git branch -a

// 원격 저장소 브랜치 가져오기
 git checkout -t origin/브랜치명

// 브랜치 전환
 git checkout 브랜치명

// 브랜치 생성
 git branch 브랜치명

// 로컬 저장소 브랜치 삭제
git branch -d 브랜치명

// 원격 저장소 브랜치 삭제
 git push origin --delete 브랜치명

// 로컬에서 삭제했는데 원격 저장소에 남아있는 브랜치 삭제
 git remote prune origin

// 브랜치 병합
 git merge 브랜치명

// 브랜치 병합 취소
 git merge --abort

포크(Fork)

  • 오픈 소스 프로젝트를 공부하거나 Contributors가 되고 싶을 때
    해당 원격 저장소(Remote Repository)를 자신의 원격 저장소로 복사 -> 이를 Fork라 한다.
  • 깃허브의 경우 공개된 모든 자료가 오픈 소스로 다른 사람의 자료를 Fork 할 수 있다.

예시)

메시와 호날두가 만든 저장소가 있다.이 저장소에 없는 기능을 네이마르가 만들고 싶어하지만 저장소의 권한은 메시와 호날두만 있고 네이마르에게는 없다.이때, 저장소의 권한을 얻어내기 위해 네이마르가 기여자(contributor) 등록을 해야 할까? -> 굳이 안해도 돼!!

기여자(contributor) 등록을 따로 하지 않아도 Fork 기능을 사용하여 원본 저장소를 복사해 내 저장소에서 commit > push 가능.기능 생성 후,내 저장소 브랜치와 메시와 호날두의 저장소에 브랜치에 merge를 하면 된다. -> 물론 이럴때는 허락을 받아야 한다!!

과제로 다음과 형태 자주 사용
1. Fork로 과제를 복사
2. 과제 수행 후 pull request(PR)

Fork 해보기

  1. 자기가 fork 하고 싶은 레포지토리 들어가서 오른쪽 상단에 Fork 버튼 클릭

  1. 다음 Create a new fork 설정 화면에서 Owner를 클릭하여 자신의 계정을 선택(아마 자동으로 설정)한 뒤,
    저장소에 저장될 원격 저장소 이름과 설명(Description)을 작성한 뒤 Create fork 버튼을 클릭

  1. 성공하면 계정에 본인이 설정한 원격 저장소의 이름으로 새로운 리포지토리가 생긴다.
브랜치포크
하나의 저장소에서 브랜치를 나누어 씀여러 저장소를 만들고 브랜치를 만들어 사용
코드 커밋 이력 쉽게 볼 수 있음원본 저장소에 영향을 미치지 않고 자유롭게 수정 가능
소수 인원 작업 사용불특정 다수 사용 작업시 사용

Git Pull Request(PR)

상대방의 저장소를 fork한 후 원본 저장소에 올리고 싶다면? -> 원본 저장소의 권한을 가진 사람에게 두 브랜치를 합치는 것을 허락해달라고 요청 -> 이것을 Pull Request(PR)

  • PR은 원본 저장소에 보낼 수 있고 포크한 저장소에도 보내기 가능
  • PR 요청을 사용하면 깃허브의 저장소안에 있는 브랜치에 푸쉬한 변경 사랑을 다른 사람에게 알림 가능
  • PR이 열리면 팀원과 변경사항을 논의하고 검토 가능하며 변경 사항이 기본 브랜치에 병합되기전에 후속 커밋 추가 가능

일단 실습을 위해 레포지토리를 새로 하나 만들어서 fork하고 form한 레포지토리를 내 로컬에다가 clone을 했다.

그리고 README.md만 수정하고

push를 해주었다.일단 내가 for한 저장소는 변경이 되었을텐데 이제 PR를 날려보자

일단 Contribute를 누르면

이런게 뜨고

여기서 이제 fork 한 저장소 브랜치에서 원래있던 저장소로 PR 요청을 보내겠다 이런 것도 뜨고

제목과 메시지를 써서 보낼 수 있다.

밑에서는 변경 부분을 확인 할 수도 있고 Create PR을 누르면 된다.

그럼 여기서 PR한 부분을 확인 할 수있다.

그리고 다시 원본 저장소에 있는 레포지토리로 가면

왼쪽 상단에 PR이 와있는걸 확인 할 수 있고

새롭게 PR 요청이 들어온걸 확인 가능하다.

여기서 이제 merge를 진행 할 지 안할지 확인 하면 된다.


이걸 누르게 되면 충돌이 발생하지 않는 이상 merge가 되는걸 확인 할 수 있다.


참고

[GitHub] commit이란 무엇인가? (snapshot, roll-back, repository)

github 동작 원리

[Git / Github] 포크 (Fork) 하는 방법 (오픈 소스 프로젝트 복제하기

[30분 요약강좌 시즌 4-6] 알잘딱깔센 GitHub - fork와 pull request

profile
노력은 배신하지 않아 🔥

0개의 댓글