Git & Github - init, add, commit, push, pull, merge

신혜린·2023년 1월 13일
0

wecode42

목록 보기
7/32

2023.01.11(수) Westudy > Precourse > 공통세션 > Database


Git & Github

  • Git은 버전 관리 시스템으로, 시간이 지남에 따라 파일의 변경 사항을 추적하는 도구를 뜻함
  • Github은 Git을 사용하는 프로젝트를 위한 호스팅 서비스를 뜻함

깃허브 협업 환경 만들기

Common Workflow: 내 로컬 Repository를 GitHub 에 push 하기
1. 로컬에서 add / commit 한다.
2. Github 으로 이동 후 새 repository를 생성한다.
3. 나의 로컬 repository 를 GitHub repository 와 연결한다. (remote 추가)
4. 새 remote 를 이용하여 코드를 Push 한다.


  • 폴더를 만들고자 하는 원격저장소의 위치로 이동
cd ./Desktop/
  • 이동한 위치에 git practice 폴더 생성
mkdir git_practice
  • git init - git 초기화
# git_pracitce 폴더로 이동
cd git_practice

# git 초기화
git init

-> 만약 깃허브에서 클론해온 경우, git init을 해줄 필요는 없다. git init은 새 git 리포지토리를 초기화하고 기존 디렉터리 추적을 시작하게 해주는 반면 git clone은 이미 원겨으로 존재하는 프로젝트의 로컬 복사본을 만드는 것이기 때문에 초기화를 해줄 필요가 없는 것.

ls-al

-> 위 명령어를 통해 .git 폴더를 확인할 수 있음.


  • 파일 생성 및 vim을 이용한 내용 작성
touch lynn.md

-> touch 명령어를 통해 파일 생성 -> vim 편집기 실행 -> i로 편집 모드 전환 후 내용 작성 및 .wq 키로 저장


  • git 상태 변화 확인
git status

  • git add - staging(중간 저장)
git add

  • git commit
git commit -m "커밋 메세지"

-> 틈틈이 git status로 상태 변화 확인


  • commit history 확인 명령어
git log

  • Github repo 생성
    github 사이트 -> New repository

  • 로컬에 생성한 git_practice 폴더와 원격 저장소인 github repository 연동
git remote add origin repository 주소

-> 위 주소는 깃허브 리포지토리에 가면 나와있음.


  • git push
git push origin main

-> 로컬에 있는 파일들 및 수정사항을 remote을 통해 origin, 즉 원격 저장소인 githube repository에 올리는 명령어


branch(브랜치) 생성 이유

위 사진을 보면 각각 Master, feautre/login, feature/signup 이라는 브랜치들이 존재하는 것을 볼 수 있다.

이렇게 각각의 브랜치를 생성하는 이유는 협업을 하는 과정에 있어서 함부로 master 브랜치에 푸쉬를 하는 게 위험(!)하기 때문이다.
master 브랜치는 항상 정상적으로 작동하고 안정적인 버전의 코드를 포함하고 있어야 한다. 그렇기 때문에 따로 브랜치를 생성하지 않고 바로 master에서 작업을 하게 될 경우 오류를 낼 수도, 함부로 삭제를 하게 될 수도 있기 때문에 나만의 작업공간 = 브랜치를 만들어서 코드를 작성 후 master와 합쳐달라고 요청, 즉 PR(pull request)를 보내게 되는 것.


💬 github 협업 flow 에서 궁금했던 것

1) feature/login 브랜치에서 master에 풀리퀘를 보냈고 merge까지 한 상태에서
2) feature/signup 브랜치가 feature/login 브랜치와 mastermerge를 하기 이전의 리포지토리를 클론해온 상태일 경우,
3) 이후에 feature/signup 브랜치가 푸쉬 및 풀리퀘를 보내게 될 경우 💥충돌(Conflicts)💥이 일어나게 된다.
-> 이런 경우, github 내에서 충돌을 해결하기 보단 편집기 내에서 다시 최신 상태의 master 브랜치를 pull 해온 뒤 push를 하는 게 가장 안전하다. github 내에서 충돌을 해결하게 될 경우, 나의 편집기에는 충돌을 해결한 내역이 반영되지 않기 때문에 곤란해짐. (윤국님 피셜!)

profile
개 발자국 🐾

0개의 댓글