깃을 본격적으로 사용하고자 간단한 개념 정리하고 있다. 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 <원격저장소명> <브랜치명>
'git 공부' 카테고리의 다른 글
Git 정리 - 잘못올린 파일 삭제, 브랜치, add/commit/push 취소 (0) | 2024.05.20 |
---|---|
Git 정리 - 핵심 기본 명령어(add, status, log, reset, commit, remote, pull, clone, branch, merge) (0) | 2024.05.20 |
Git 정리 - 협업하기 fork, Pull Request (0) | 2024.05.20 |
[git] github에서 협력하여 작업해보자 (organization) (0) | 2020.10.14 |
[git] github에서 branch를 사용해서 가지를 쳐보자 (1) | 2020.10.08 |