본문 바로가기

git 공부

Git 정리 - git 개념, 버전관리, 기록보기, 원격저장소

728x90
반응형

깃을 본격적으로 사용하고자 간단한 개념 정리하고 있다. push pull commit 같은 자주쓰는 명령어 정리했다. 다음의 블로그를 참고해서 정리했다. 잘돼있다 참

 

⚡️ git 개념 & 원리 (그림으로 알기쉽게 비유 😃)https://inpa.tistory.com/entry/GIT-%E2%9A%A1%EF%B8%8F-%EA%B0%9C%EB%85%90-%EC%9B%90%EB%A6%AC-%EC%89%BD%EA%B2%8C%EC%9D%B4%ED%95%B4

 

⚡️ 버전 관리하기 (git init / add / commit / log / diff)
https://inpa.tistory.com/entry/GIT-%E2%9A%A1%EF%B8%8F-%EB%B2%84%EC%A0%84-%EA%B4%80%EB%A6%AC%ED%95%98%EA%B8%B0-init-add-commit

 

⚡️ 깃헙 - 원격 저장소 연동 💯 정리 (git remote / push / pull)
https://inpa.tistory.com/entry/GIT-%E2%9A%A1%EF%B8%8F-%EA%B9%83%ED%97%99-%EC%9B%90%EA%B2%A9-%EC%A0%80%EC%9E%A5%EC%86%8C-%EA%B4%80%EB%A6%AC-git-remote

git 개념

Git

 

분산형 버전 관리 시스템(Version Control System) 의 한 종류
버전 관리

 

버전 관리

 

버전관리 시스템은 파일변화를 시간에 따라 기록했다가 나중에 특정시점의 버전을 다시 꺼내올 수 있는 시스템

 

Git 의 필요성

 

동료와 만약 확인하지 않고 동시에 작업을 한다면 누군가의 작업은 겹체 쓰여질 것이고 지워진다. 이를 사전에 방지하기 위함
나와 동료는 같은 페이지에 각자 수정사항을 업로드 할 수 있고, 두개의 복사본을 저장할 수 있다.

 

장점:

 

여러 명이 동시에 작업하는 병렬 개발이 가능
인터넷이 연결되지 않은 곳에서도 개발을 진행

 

작동구조

 

staging area(스테이지) -> local repository(로컬 저장소) -> remote repository(원격 저장소)

 

Repository

 

스테이지에서 대기하고 있던 파일들을 버전으로 만들어 저장하는 곳
원격 저장소와 로컬 저장소 두 종류의 저장소를 제공

 

원격 저장소(Remote Repository)

 

파일이 원격 저장소 전용 서버에서 관리되며 여러 사람이 함께 공유하기 위한 저장소

 

로컬 저장소(Local Repository)

 

내 PC에 파일이 저장되는 개인 전용 저장소
스테이지 내용은 .git/index 파일
저장소의 내용은 .git/HEAD 파일

 

Working Tree (Working Directory)

 

저장소를 어느 한 시점을 바라보는 작업자의 현재 시점.

 

SnapShot

 

특정 시점에서 파일, 폴더 또는 워크스페이스의 상태
스냅샷을 통해 특정 시점에 어떤 파일에 어떤 내용이 기록되어 있었는지, 폴더 구조는 어떠했는지, 어떤 파일이 존재했는지 등 저장소의 모든 정보를 확인
커밋(commit)을 실행하면 스냅샷이 저장

 

Checkout

 

이전 버젼 작업을 불러오는것.

 

Staging Area

 

저장소에 커밋하기 전에 커밋을 준비하는 위치.
로컬 스테이지에 올려둔 파일만 원격 저장소에 커밋할 자격이 있는 것

 

Commit

 

현재 변경된 작업 상태를 점검을 마치면 확정하고 저장소에 저장하는 작업

 

Head

 

현재 작업중인 Branch

 

Branch

 

가지 또는 분기점

 

Merge

 

다른 Branch의 내용을 현재 Branch로 가져와 합치는 작업

 

Git 호스팅 웹 서비스

 

깃 저장소 서버를 대신 유지 및 관리해주는 서비스
주로 개인은 GitHub, 회사는 GitLab

git 버전관리

git init

 

깃 저장소를 초기화
일반 폴더에 이것을 입력한 후에야 추가적인 깃 명령어들을 줄 수 있다

 

git add

 

git 스테이징
저장소에 새 파일들을 추가하진 않지만 깃이 이 파일들을 지켜보게 한다.
파일을 추가하면, 깃의 저장소 스냅샷에 포함된다.

 

git status

 

git 워킹 트리의 상태볼 수 있다.
워킹 트리가 아닌 폴더에서 실행하면 에러 발생
stage에 올라간 파일들을 볼 수 있다. 초록색: 스테이징된 파일
빨간색: 깃이 일정 상관 안씀

 

git rm --cached

$ git rm --cached <fileName>

 

로컬, 원격저장소 모두 파일이 바로 삭제
--cached 옵션: 로컬에는 파일이 남아있지만 commit하면 원격저장소에서 해당 파일이 삭제
원격저장소에 없는 파일이면 untracked(빨간색) 처리

 

.gitignore

 

git 관리를 안받고 싶은 파일
제외할 폴더를 적기

 

git commit

 

의미있는 수정 작업이 끝났을 때 마침을 알리는 작업

git commit -m “Message"

git 기록 보기

git log

 

커밋 내역을 확인해보고 싶을 때

$ git log

$ git shortlog // 요약된 로그

 

commit 뒤에 나온 번호는 상태의 일련번호

커밋을 그래프로 보여줌

$ git log --graph

 

git diff

 

커밋된 최근 버전과 작업 폴더의 수정 파일 사이의 차이 출력
작업트리 파일 : 스테이지 파일
스테이지 파일 : 저장소 최신 커밋
비교해서 최종 검토

# commit된 파일상태와 현재 수정중인 상태 비교
$ git diff

# commit된 파일상태와 add된 파일 상태 비교
$ git diff --staged

# commit간의 상태 비교하기 - commit hash 이용
$ git diff [비교할commit해쉬1] [비교할commit해쉬2]
$ git diff 048171 0c747d

# commit간의 상태 비교하기 - HEAD 이용
$ git diff HEAD HEAD^
# -- 가장 최근의 커밋과 그 전의 커밋을 비교한다

# branch간의 상태 비교하기 - HEAD 이용
$ git diff [비교할branch1] [비교할branch2]
$ git diff feature/test origin/master
# -- local의 feature/test브런치와 remote의 master branch 비교

Git 원격 저장소 연동

GIT 원격 저장소 연동

 

프로젝트 작업물을 안전 하게 백업할 수있다.
많은 사람들과 협업이 용이하다

 

깃허브(GitHub)

 

깃을 사용해서 클라우드를 쓰듯이 소스들을 업로드해서 저장, 다른 개발자들과 공유, 협업 할 수 있다.
대표적으로 Bitbucket, Gitlab, Github

 

git remote (Remote Repository 연결)

 

git remote 명령으로 현재 프로젝트에 등록된 리모트 저장소를 확인
별명 지을 수 있다.

git remote add origin https://github.com/inpa-skyrim/git-practice.git

 

url 가져오기

git remote get-url origin

 

옵션 종류 보기

$ git remote --help

 

추가한 원격저장소의 목록 확인

$ git remote
$ git remote -v # 상세히

 

특정 원격 저장소의 정보를 확인할 수 있다.

$ git remote show 이름

 

원격저장소 이름 변경

$ git remote rename 기존이름 변경할이름

 

원격저장소를 제거

$ git remote rm 이름

Remote 저장소 업로드

git push

 

현재 branch에서 새로 생성한 commit들을 원격 저장소에 업로드
로컬에서 작업후 커밋할려고하는데 다른사람이 이 파일내용을 수정하고 커밋했다. (내 로컬 커밋 로그 != 깃헙 커밋로그)-> 충돌일어남 -> pull 하라는 경고메시지

 

git pull

 

원격 저장소에서 파일 내려받기
원격저장소 커밋과 동기화하고 커밋을 머지 시킨다. (git fetch + git merge)
원격 저장소와 로컬 저장소의 상태를 같게 만든다.
원격 저장소의 커밋내용과, 로컬 저장소의 커밋내용이 중복되어 겹치면 충돌난다. -> 사용자가 고쳐주어야함
원격 저장소의 내용을 가져와서 현재 브랜치와 병합(merge)
그 이외의 작업 파일들은 건들지 않음

 

git clone

 

원격 저장소의 저장소를 내 local에서 이용할 수 있게 그대로 똑같이 복사

$ git clone [remote repo 주소]
$ git clone https://github.com/goddaehee/StuCafeInfoFo.git

 

로컬 저장소의 내용이 원격 저장소의 내용과 일치
git clone은 프로젝트에 처음 투입될 때 사용되어야 하는 명령

 

git fetch

 

원격 저장소의 branch와 commit들을 로컬 저장소와 동기화. 단 merge는 안함
branch와 commit들을 로컬 저장소와 동기화 단 merge는 안함

$ git fetch [원격 저장소명] [브랜치명]

 

옵션 생략시 모든 브랜치 가져옴

원격 저장소 끊기

 

현재 연결된 원격 레파지토리 확인

$ git remote -v
origin  https://github.com/IfUwanna/Tool.git (fetch)
origin  https://github.com/IfUwanna/Tool.git (push)

 

기존 리포지토리 remote 제거

# git remote remove <name>
$ git remote remove origin

소스 및 커밋 내려 받기

$ git clone https://github.com/유저네임/원격저장소이름.git

협업시 주의사항

 

fetch와 status를 통해 pull할 내용이 있는지 먼저 확인할 것

 

$ git fetch
$ git status

 

커밋 하나가 뒤쳐져 있다는 메세지찾으면 pull할 것, 작업 후 push 할 수 없다.
원격, 로컬 저장소 commit 일치 시키고 merge (fetch + merge = pull)

 

$ git pull <원격저장소명> <브랜치명>
반응형