git 명령어

수민·2022년 11월 14일
0

프론트엔드

목록 보기
41/48

chapter 1.혼자 작업

  1. 김코딩이는 fork한 codestates 깃헙 리파지토리를 본인의 local에서 작업하려고 합니다. 복사한 깃헙 리파지토리 주소는 https://github.com/kimcoding/test.git 입니다.

git clone https://github.com/kimcoding/test.git

  1. local working directory에서 index.js 파일을 추가했습니다. 기존과 변경된 파일들이 어떤 것이 있는지 확인해 보려고 합니다.

git status

  1. local 의 index.js 파일을 staging area로 옮기려고 합니다.

git add index.js

  1. local 의 index.js 파일을 staging area로 옮기려고 합니다.

git add index.js

  1. 내 깃헙 리파지토리에 'index.js 수정' 이라고 커밋 기록을 남기려고 합니다.

    git commit -m 'index.js 수정'

  2. 앗.. index.js 파일에서 오타를 발견했어요. 수정을 해야하는데 불필요한 커밋을 또 하고 싶지는 않습니다. 커밋한 기록을 되돌려서 이전으로 돌아가는 방법은 없을까요?

    git reset HEAD~1

  3. 수정을 완료했어요! 다시 index.js 파일을 staging area로 옮겨볼까요?

    git add index.js

8.아까와 같이 'index.js 수정' 이라는 메시지로 커밋 기록을 남겨봅시다.

git commit -m 'index.js 수정'

  1. 내 깃헙 origin 리파지토리의 main으로 푸쉬합니다.

    git push origin main

  2. 내 커밋 로그를 확인하는 명령어를 입력해보세요.

    git log

chatper2. 함께작업

  1. 김코딩은 local working directory를 Git의 관리 하에 들어가게 해 주려고 합니다.

git init

  1. 혼자 작업을 조금 진행하고 commit 기록을 남겼습니다. 내 Remote Repository와 연결해서 Remote 상에도 이 코드를 적용해야겠어요. origin이라는 이름으로 내 Remote Repository를 등록하세요. 내 Repository 링크는 https://github.com/kimcoding/test 입니다.

git remote add origin https://github.com/kimcoding/test

  1. 페어와 함께 작업을 진행하려고 합니다. 지금까지 main 브랜치에 커밋한 기록을 방금 등록한 origin remote repository에 올려서, 페어에게 코드를 공유해야겠어요.

    git push origin main

  2. 페어가 내 Remote Repository를 Fork 했다고 합니다. 페어의 Remote Repository를 내 Local에 pair라는 이름으로 등록해야겠어요. 페어의 리파지토리 링크는 https://github.com/pair/test 입니다.

    git remote add pair https://github.com/pair/test

  1. 리모트 리파지토리가 잘 연결된 것이 맞는지 모르겠어요. 연결된 리모트 리파지토리의 목록과 주소들을 확인해 볼까요?

git remote -v

  1. 리모트 연결이 완료되었으니 페어와 나누어서 작업을 진행했습니다. 내 commit을 Push하기 전에 페어가 작업해서 본인의 Remote Repository에 올려 놓은 내용을 합치려고 합니다. 페어의 코드를 내 Local로 받아올 수 있을까요?

    git pull pair main

  2. 특정 commit 시점으로부터 각기 다른 commit을 만들면, 기본적으로 다음과 같이 자동으로 merge가 됩니다. 이제 내 Remote Repository에도 Local의 내용을 반영합시다.

    git push origin main

  1. 내가 footer.html 파일을 수정했습니다. 작업한 사항을 commit 하기 위해 먼저 staging area에 작업한 파일을 추가해주세요.

    git add footer.html

  2. staging area에 파일이 추가되었습니다. 'footer 수정' 이라는 메시지로 commit 을 진행해주세요.

    git commit -m 'footer 수정'

  1. 페어도 footer.html에 변경한 사항이 있다고 합니다. 내 커밋을 Remote에 푸시하기 전에 페어의 코드를 내 컴퓨터로 받아올 수 있을까요?

    git pull pair main

  1. 앗.. 하필 페어도 footer.html 파일의 동일한 라인을 수정했군요. 페어가 작성한 파일과의 충돌이 발생했습니다.
    ...충돌이 생긴 부분의 수정을 완료했어요! 다시 Remote Repository에 Push 하기 위해서 수정한 파일을 staging area에 추가해주세요.

git add .

  1. 충돌이 해결된 후 staging area에 올라간 파일은 자동으로 commit 메시지가 생성됩니다. 자동 생성된 commit 메시지를 적용하는 명령어를 입력하세요.

    git commit

13 . 다음과 같이 merge commit 메시지가 자동으로 생성됩니다. 이제 내 Remote Repository에도 Local Repository의 내용을 반영합시다.

git push origin main

3. 브랜치

Github 에서 공동 프로젝트 Repository를 생성했어요. 각자의 Repository로 Fork 하고 clone 을 받았습니다. 내가 맡은 회원가입 기능을 구현하기 위해서 feat/signup 이라는 브랜치를 생성하고 해당 브랜치로 이동해 볼까요?

git checkout -b feat/signup

  1. feat/signup 브랜치를 만들었습니다. 생성한 브랜치 목록과 내가 현재 어떤 브랜치에 있는지 확인해 봅시다.

    git branch

  2. 기본 회원가입 기능 구현을 완료했습니다! 여기에 추가로 페이스북으로 가입하기 기능을 만들고 싶어요. 구현해놓은 기본 회원가입 기능이 망가질 수도 있으니 feat/signup-oauth 브랜치를 하나 더 만들어서 작업해 볼까요?

    git checkout -b feat/signup-oauth

4.소셜 회원가입 기능까지 구현을 완료했습니다! 구현한 기능을 feat/signup 브랜치에 병합하려고 합니다. 먼저 feat/signup 브랜치로 이동하세요.

git checkout feat/signup

5.feat/signup-oauth 브랜치의 내용을 feat/signup 브랜치로 병합하는 명령어를 입력하세요.

git merge feat/signup-oauth

  1. 회원가입 기능 구현이 완료된 feat/signup 브랜치를 Remote Repository로 업로드하세요.

git push origin feat/signup

  1. 구글 로그인 기능도 추가를 해 보려고 시도하다가 어려워서 그만두었습니다. 작업하던 코드를 잠시 다른 공간에 저장해 둘 방법이 있을까요?

    git stash

브랜치 명령어 모음

새로운 브랜치 생성 :

$ git branch 새로운 브랜치 이름

새로운 브랜치 생성후 해당 브랜치로 전환 :

$ git switch -c 새로운 브랜치 이름 /$ git checkout -b 새로운 브랜치 이름

브랜치 목록 확인 :

$ git branch

브랜치 목록과 각 브랜치의 최근 커밋 확인 :

$ git branch -v

브랜치 삭제 :

$ git branch -d 삭제할 브랜치 이름
$ git branch -D 해당 명령어는 병합하지 않은 브랜치를 강제 삭제하는 방법입니다.

브랜치 전환:

$ git switch 브랜치 이름
$ git checkout 브랜치 이름

브랜치 병합 (master 브랜치로 dev 브랜치를 병합할 때 (master ← dev)):

  1. $ git checkout master
  2. $ git merge dev

로그에 모든 브랜치를 그래프로 표현

$ git log --branches --graph --decorate

아직 commit 하지 않은 작업을 스택에 임시로 저장

$ git stash

프로젝트 work flow

(1) Fork,Clone
Origin으로 fork 하고 Local로 Clone 하기

Remote : Repository --fork--> Origin : Repository --Clone--> Local : Repository

profile
헬창목표

0개의 댓글