git init, git commit, git fork 원격저장소 복제하기

AN JUHYUN·2024년 4월 15일

git

목록 보기
1/1
post-thumbnail

이전까지 나는 github desktop을 이용해서 push, pull, commit등을 진행했다.
하지만 다양한 사용방법을 정확하게 익혀야 협업에 도움을 받을 수 있기에
정리한다!

git 용어

  1. Repository(저장소) : 코드나 문서를 저장하는 프로젝트 저장공간

  2. local Repository(로컬 저장소) : 개발자의 컴퓨터에서 작업되는 프로젝트 저장공간

  3. Remote Repository(원격 저장소) : 클라우드 서비스(ex)GitHub)를 통해 인터넷 서버에 저장된 공간

  4. Commit(커밋) : 저장소에 변경된 내용을 메세지와 함께 기록

  5. Branch(브랜치) : 여러 작업을 동시에 협업하며 수행할 때 사용하는 관리 개념

  6. Merge : 브랜치 작업 완료 시 기존 코드와 합치는 명령어

  7. Pull : 원격 저장소에 변경사항을 로컬 저장소에 가져오는 명령어

  8. Push : 로컬 저장소에 변경사항을 원격 저장소로 업로드하는 명령어

  9. Pull Request : GitHub 호스팅을 통해 코드 수정을 요구하거나 토론하며 개선하는 개념

  10. Fork : 다른 사용자의 저장소를 나의 계정으로 복제하는 것(원본 저장소와 독립적 관리 가능)

1. Repository 생성 - git init

저장소를 생성할 위치의 directory에서 cmd창을 열고 git init
: 사용할 원격저장소를 현재 디렉토리 기준으로 생성한다.

사용법

  1. 저장소를 생성할 위치에서 cmd를 입력해서 명령프롬포트를 연다.


  1. 명령프롬포트에 git init 을 입력한다.

  1. 성공했다면 생성 된 .git 파일을 확인할 수 있다.

2. 작업상태 추가 - git add

git add <파일명/디렉토리 경로>
: 변경 파일 또는 디렉토리를 스테이징 영역(staging area)에 추가
git add .
: 현재 디렉토리의 모든 변경내용을 스테이징 영역에 추가(하위 디렉토리만 포함)
git add -A
: 작업 디렉토리의 변경내용을 스테이징 영역에 추가(상위, 하위 디렉토리 포함)
git add -p
: 변경사항을 터미널에서 확인하면서 스테이징 영역에 추가

git add는 로컬 디렉토리상의 변경 된 내용을 스테이징 영역에 추가하는 명령어이다.
commit과 달리 깃 저장소의 변경이력에 어떠한 영향도 주지 않는다.

사용법

1) git add <파일명>

  1. 파일생성(test 쓰려다 오타남;)
  2. cmd 창에 git add [파일명] 입력
  3. 작업상태 git status로 확인

2) git add .

  1. 파일명 수정
  2. cmd 창에 git add . 입력 후 작업상태 git status로 확인

3) git add -A

  1. 하위폴더 생성 및 파일추가
  2. cmd 창에 cd 하위폴더멍으로 폴더 접근 후 git add -A 입력
  3. git status로 작업상태 확인

4) git add -p

  1. 파일추가 및 파일내용 변경

  2. cmd 창에 cd ..으로 상위폴더 이동 후 git add -p 입력, 내용변경을 진행할 것이므로 y로 진행

  3. git status로 작업상태 확인

🤔🤔 git add -p는 하위폴더의 변경상태는 적용되지 않네?

  1. 확인을 위해 한번 더 git add -p

-A.-p차이

git add -A는 작업 디렉토리 상에 어디에 위치하든 항상 동일하게 모든 변경 내용을 스테이징으로 넘깁니다.
반면에 git add .는 명령어를 실행한 디렉토리 이하에서 발생한 변경 내용만 포함하며, 해당 디렉토리 기준으로 상위 디렉토리의 변경 내용을 포함하지 않습니다.
git add -p는 현재 디렉토리의 변경상태를 감지하여 hunk(조각)를 만들어서 스테이징으로 넘깁니다. 하위폴더의 변경사항을 감지하지 못합니다.

git add 뒤에 옵션이 없으면?

뒤에 파일 명 없이 git add 했더니, 어떤 것도 더해지지 않았다.
문제사항을 보기 위해 git status 했다.

브랜치 안에 커밋이 아직 없고 추척되지 않는 파일을 add시키라는 설명이 나와있다.
옵션은 선택이 아닌 필수!

add 취소하기 - git rm --cached

git rm --cached 파일명 : add 된 파일을 깃이 추척하지 않는 상태로 스테이지에서 내린다.

사용법

  1. cmd창에 git rm --cached 파일명를 입력한다.

  2. git status로 작업상태를 확인한다.

여러가지 hunk(파일 조각) 명령어

y : 이 조각(hunk) 이 이후 커밋에 포함될 수 있도록 stage 시킨다
n : 이 조각이 이후 커밋에 포함되지 않도록 stage 대상에서 제외한다
q : 종료; 이 조각 및 이후 모든 조각들을 stage 시키지 않는다
a : 이 조각과 이후 현재 파일 내 모든 조각들을 stage 시킨다
d : 이 조각 및 이후 현재 파일 내의 모든 조각들을 stage 시키지 않는다
g : 파일 내의 다른 조각들의 목록을 표시하고 이동할 조각 위치를 선택한다
/ : 정규표현식을 이용해 조각을 검색하고 해당 위치로 이동한다
j : 현재 조각에 대한 결정은 뒤로 미루고 다음 미확정 조각 위치로 이동한다
J : 현재 조각에 대한 결정은 뒤로 미루고 확정 여부와 상관없이 다음 조각 위치로 이동한다
k : 현재 조각에 대한 결정은 뒤로 미루고 이전 미확정 조각 위치로 이동한다
K : 현재 조각에 대한 결정은 뒤로 미루고 확정 여부와 상관없이 이전 조각 위치로 이동한다
s : 현재 조각을 더 작은 단위의 조각으로 나눈다
e : 현재 조각 내용을 직접 편집한다
? : 조각 관련 조작 도움말을 표시한다

3. local Repository에 변경상태 저장 - git commit

git commit -m "커밋 메세지"
: staging area에 저장되어있는 변경 사항을 로컬저장소에 저장한다.
git commit --amend -m "수정된 메시지"
: commit상태의 메세지를 수정한다.

사용법

  1. 로컬저장소에 저장할 디렉토리에서 cmd를 열어서 git commit -m "커밋 메세지"를 입력

메세지 수정하기

  1. cmd창에 git commit --amend -m "수정된 메시지"를 입력

4. Remote Repository 연결 - git remote

git remote add origin https://github.com/[본인계정명]/[디렉토리명]
: github의 원격저장소(Remote Repository)와 내 디렉토리를 연결한다.
git remote -v로 연결상태를 확인할 수 있다.
git remote remove origin로 저장소연결을 삭제할 수 있다.

사용법

  1. cmd창에 git remote add origin https://github.com/[본인계정명]/[디렉토리명]

  2. git remote -v로 연결 확인

5. 원격저장소에 push - git push

git push <remote> <branch>
: remote는 저장소명 branch는 브랜치이름 으로 깃 저장소에 푸쉬함
git push origin main
: 메인 브랜치에 origin을 원격저장소로 푸쉬함

git push <remote> <branch> 사용자가 이 두 매개변수를 지정하지 않는다면 Git는 기본적으로 origin을 원격 저장소로, 현재 작업하고 있는 브랜치를 푸시할 브랜치로 지정한다.
현재 작업 중인 브랜치가 main인 경우, git push 명령어는 두 개의 기본 매개변수를 제공하기 때문에 git push origin main과 동일하게 실행된다.

사용법

  1. cmd에 git push origin main 입력
    😨😨😨ERROR😨😨😨

    😢 에러코드
    : failed to push some refs to 'https://github.com/itjuh/gitTEST'
    https://github.com/itjuh/gitTEST라는 경로를 참조하여 push할 수 없음.
    🤔 원인
    : 저장소를 깃허브에 만들 지 않고 자동생성해준다 생각하고 바로 적었기 때문~
    🙂 해결
    : 깃허브에 저장소 생성 후 http링크를 가져와서 연결했다.

  2. git remote remove origin입력 : 원격저장소 주소변경을 위한 삭제

  3. git remote add origin https://github.com/itjuh/testRepo.git입력

  4. cmd에 git push origin main 입력
    😨😨😨ERROR😨😨😨

    😢 에러코드
    : failed to push some refs to 'https://github.com/itjuh/testRepo.git'
    https://github.com/itjuh/testRepo.git라는 경로를 참조하여 push할 수 없음.
    🤔 원인
    : 저장소 내에 브랜치명이 main이 아니고 master임
    🙂 해결
    : git push origin으로 브랜치명을 확인하고 다시 push함!

비공개 저장소에 push

Private 저장소의 경우 Ssh key를 사용하여 업로드를 해야 함
https://github.com/settings/keys 로 접속하면 ssh키를 등록할 수 있다고 함

git remote add origin git@github.com:[사용자닉네임]/[저장소경로]
Enter passphrase for key '/Users/.ssh/id_rsa':

참고)git ssh 키 생성 및 등록
참고) git add 사용법

6. 원격 저장소에서 pull - git pull

git pull
: 원격 저장소에 있는 변경사항을 로컬저장소로 가져와서 자동으로 병합(merge)
git pull [원격 저장소의 이름] [원격 저장소에서 받아오고자 하는 브랜치의 이름]
: 원하는 저장소의 원하는 브랜치를 로컬저장소로 받아와서 병합

사용법

  1. 저장소 연결상태 확인 git remote -v

  2. 저장 할 로컬 디렉토리에서 git pull입력

7. 새로운 브랜치 생성하기 - git branch

git branch [브랜치명]
: 로컬 저장소에 새로운 버전을 관리할 브랜치를 생성한다.
git push -u origin [브랜치명]
: 원격 저장소에 생성된 브랜치를 push한다.

사용법

  1. main브랜치 생성을 위해 로컬 저장소의 루트에서 git branch -M main을 입력
  2. 원격에 로컬 브랜치를 적용하기 위해서 git push -u origin main입력
  3. 브랜치 상태 확인을 위해서 git branch --all입력

8. 브랜치 삭제하기

git branch -d [브랜치명]
: 로컬 저장소에 브랜치를 지운다.
git push [원격이름:origin] --delete [브랜치명]
: 원격 저장소에 브랜치를 지운다.

사용법

  1. dev 브랜치를 삭제하기 위해 git branch -d dev를 입력

  2. 삭제된 것을 확인하기 위해 git branch --all을 입력

    🙄삭제되지 않았다.(git branch: 로컬저장소 브랜치 확인, git branch --all: 원격저장소 브랜치 확인)

  3. 원격 저장소에 브랜치를 삭제하기 위해 git push origin --delete dev를 입력

  4. 삭제된 것을 확인하기 위해 git branch --all을 입력

8. 브랜치 합치기 - git merge

git merge [브랜치명]
: 브랜치 합치기(1) name의 branch를 현재 branch 로 합친다(merge)
git rebase master
: 브랜치 합치기(2) - 더 많이 사용하는 방법.

사용법

  1. 현재 브랜치 확인하기 위해 git branch
  2. main 브랜치의 업데이트 사항을 master 브랜치로 가져와야 하므로 git switch master
  3. 현재 브랜치 확인하기 위해 git branch
  4. 브랜치를 합치기 위해 git merge main
  5. 브랜치를 merge했는데 아직 처리가 안됐다. 이유는?
    깃에서 병합처리를 완료하지 않았기 때문~

pull request 작성/승인

요청이 성공적으로 반영되었다.

9. 브랜치 fork하기 - git fork

fork
: 원본 저장소와 연결 된 상태로 내 깃허브 저장소로 복제하기
clone
: 원본 저장소를 내 저장소로 복제하기(연결이 끊김)

사용법

  1. fork할 repository주소에서 fork를 클릭하여 create a new fork 진행
  2. 포크 된 저장소 확인
  3. fork 된 remote repository의 파일을 local repository로 clone하기
    git clone [경로] [디렉토리명]
  4. fork 상태 업데이트
  5. 새로운 branch생성 후 pull request 보내기


깃 명령어 사용해보니 github desktop처럼 편리한데 하루종일 걸렸다.
그래도 fork, clone, pull, push등등 여러가지를 해볼 기회가 있어서 뿌듯했다.
자주 써야지, 까먹지 말자!!!

profile
frontend developer

0개의 댓글