Archive

[Git] Git 사용 기초 ( local-remote / branch-head / push-pull )

manon_e 2022. 10. 26. 15:09
반응형

 

 

 

 


 

Git != GitHub

 

 

 

Git

 - 분산 버전 관리 프로그램

 - 코드 버전 관리 소프트웨어

 - 어느 컴퓨터에서나(로컬에서) 가능 (인터넷 연결이나 계정등록 필요없음)

 

 

GitHub

 - git을 바탕으로 하는 코드 호스팅 플랫폼

 - 원격 저장소를 대신 제공해주는 서비스(웹서비스)

 - 클라우드에 저장해서 다른 사람과 쉽게 공동으로 작업

 

 

 

 

 

 


 

 

 

 

 

 

local과 github dusruf

 

 

 

1. repository 생성부터 시작할 때

  - Github 페이지 > New repository (상단바) > repository name 작성 > create repository

  - 나의 로컬 repository를 Github repository와 연결 (remote 추가)

git remote add origin https://github.com/<your-username>/<your-repo-name>.git

 

 

 

 

2. 이미 생성된 public repository를 clone 받을 때

git clone url입력

 

 

 

 

3. 프로젝트를 시작하고 중간에 git으로 관리할 때

 : 폴더 내 숨겨진 .git 디렉토리 생성 (git이 현재 저장소대한 모든 변경사항 추적/관리)

git init

 

 github에 repository 생성하고 remote 명령어로 로컬과 연결

git remote add origin https://github.com/<your-username>/<your-repo-name>.git
git remote add origin 원경저장소주소

 

 

> 기본 브랜치 명을 main으로

git branch -M main

 

 

> commit하고 push로 파일 업로드

   local 저장소의 commit 내역들을 원격으로 업로드 - push

   -u은 현재 브랜치와 원격 브랜치를 기본 연결 (--set -upstream)

git push -u origin main

 

 

현재 프로젝트와 연결된 원격저장소 확인

git remote

 

 

 

🌟 main은 local이고, origin/main은 원격저장소를 나타낸다.

 

 

 

 

 

 


 

 

 

 

 

 

Branch

 

 

브랜치는 깃의 가장 특징적인 기능이며, 프로젝트에서 일종의 타임라인 같은 것이라고 생각할 수 있다.

 

- 브랜치란 독립적으로 어떤 작업을 진행하기 위한 것

- 각각의 브랜치는 다른 브랜치의 영향을 받지 않기 때문에, 여러 작업을 동시 진행 가능

- 각자 작업을 진행한 후, 작업이 끝난 사람은 메인 브랜치에 자신의 브랜치의 변경 사항을 적용

 

 

// 브랜치 생성
git branch branchName


// 브랜치 전환
git switch branchName
git checkout branchName



// 브랜치 생성-전환 동시에
git switch -c branchName
git cehckout -b branchName


// 모든 브랜치 확인
git branch
git branch -al


// 브랜치 삭제
git branch -d branchName


// 로컬 브랜치 삭제한 것을 원격에 반영
git push -d origin branchName

 

 

 

기존에는 브랜치 이동 시 'git checkout'을 사용했는데, checkout은 브랜치 이동 이외에 더 많은 기능을 제공해서

현재에는 'git switch'가 생성되었다. 둘 다 여전히 작동한다.

 

 

 

 

Head

 : 저장소에서 현재의 위치(보거나 확인하고 있는)를 가리키는 포인터 (branch pointer, 일종의 git의 북마크)

   각 각의 브랜치마다 HEAD가 따로 존재

   현재 이동해 있는 브랜치를 HEAD가 가리킴 (=특정 브랜치를 참조)

DarkModa에 있을 때 head
Master로 이동하면 Head는 변경

 

 

 

Head가 참조하고 있는 곳 확인

cat .git/HEAD

 

 

 

 

 


 

 

 

 

 

 

 

add  > commit  > push

 

 

 

 

add

 : commit할 파일을 미리 지정 (staging area에 파일 추가)

 

//모든파일 추가
git add .


//git add 파일명
git add file.js


//여러 파일 추가
git add file.js file2.js

 

 

 

git에 추가하고 싶지않은 파일

  : .gitignore 파일생성 - 파일안에 파일명과 폴더명 나열

//ex

.DS_*
*.log
logs
**/*.backup.*
**/*.back.*
node_modules
bower_components

 

 

 

 

commit

 : 프로젝트 디렉토리의 특정 모습을 하나의 버전으로 남기는 행위, 결과물

git commit -m "커밋에관한정보/메세지"

 

 

log

 : commit 된 내역

git log

 

 

 

 

 

push

 :  commit된 내역을 push로 파일 업로드

    local 저장소의 commit 내역들을 원격으로 업로드 - push

    (branch name 따로 지정하지 않고 'git push'만 하면 해당작업 브랜치의 원격으로 자동업로드)

git push origin branchName
git push

 

 

 

 

 

 


 

 

 

 

 

 

pull

 

 

 

 

status

 : 상태확인 (현재 git의 상태 확인 : 추가, 변경사항 전부 보여줌)

git status

 

 

 

 

PR : Pull Request

 : 함께 작업중인 다른 사람들에게 내가 작업한 브랜치의 작업내용을 main 브랜치에 반영하기 전 코드를 확인해달라는 요청

   main branch와 conflict가 발생하지 않는다면, 해당 PR은 main branch로 merge 될 준비가 완료

 

 

 

 

 

Pull

  : 여러 사람이 작업중 다른 사람이 main에 작업사항은 반영했다면, local repository는 원격저장소의 main과 서로 다른 내용을 가짐

    > git pull 명령으로 remote의 최신화된 코드를 내 local repository에 반영

git pull origin branchName

//ex
git pull origin main
git pull origin develop

 

 

 

 

 

 

 

반응형