Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- Taillwind
- webpack
- docker
- HTML
- Babel
- 프로그래머스
- github
- react
- hook
- Javascript
- express
- useMemo
- 자료구조
- TAILWIND
- Next.js
- git
- 피그마
- TypeScript
- EC2
- render
- FigJam
- axios
- SSR
- Stack
- FIGMA
- CSS
- 해시
- 코딩테스트
- grid
- useCallback
Archives
- Today
- Total
나는 오늘도 멋있다
Git 과 Github 개념 & 명령어 모음 본문
Git(Version Control System)이란?
분산형 버전 관리 시스템으로, 특정 시점의 버전을 다시 꺼내올 수 있는 시스템이다. 프로젝트를 버전별로백업, 관리하여 프로젝트를 유지보수 하면서 발생할 수 있는 여러 문제들을 미연에 방지하고 해결하는 역할
Github란?
Git을 기반으로 소소코드를 온라인에 저장하고, 공유할수 있게하는 소스코드 관리 서비스
* 용어
[Git 레포지터리]: 저장소, 소프트웨어 파일이나 폴더 등 각종 정보를 저장해두는 공간
[Git 브랜치]: 독립적으로 어떤 작업을 진행하기 위한 "차원"
[Git 커밋]: 코드 수정사항을 기록하는 명령(스냅샷)
[Git Pull Request]: 수정한 코드가 있는 브랜치를 검토 후 병합해달라고 요청하는것을 말함
[Git 코드리뷰]: 다른개발자의 코드의 내용을 점검하고, 피드백을 주는 과정을 말함
[Git 오픈소스]: 공개적으로 접근할 수 있게 설계되어 누구나 자유롭게 확인, 수정, 배포할 수 있는 코드를 말함
* 목적
- 각 파일을 이전 상태로 되돌릴 수 있다
- 프로젝트를 통으로 이전 상태로 되돌릴 수 있다.
- 시간에 따라 수정 내용을 비교해 볼 수 있다.
- 누가 문제를 일으켰는지 추적할 수 있다.
- 파일을 잃어버리거나 잘못 고쳤을 때도 쉽게 복수할 수 있다.
[설치및 설정]
Git명령어 설치 (OS 따라)
Git - Downloads
Downloads macOS Windows Linux/Unix Older releases are available and the Git source repository is on GitHub. GUI Clients Git comes with built-in GUI tools (git-gui, gitk), but there are several third-party tools for users looking for a platform-specific exp
git-scm.com
Homebrew Git 설치
brew install git
git 초기설정 = 이름 & 이메일 설정
git config --global user.naem <이름>
git config --global user.email <가입이메일>
설정확인
git config --list or -l
[개별 명령어]
* 기본적으로 원격저장소명은 origin
종류 | 설명 | 명령어 |
초기화 | 처음코드 & 처음프로젝트시 초기화 | git init |
추가 | 로컬에서 변경된 모든 파일을 스테이징 영역에 추가 | git add . |
추가 | 로컬에서 변경된 특정 파일을 스테이징 영역에 추가 | git add <파일이름> |
추가 | 커밋 메세지 | git commit -m "<내용>" |
추가 | 스테이징 영역에 있는 변견사항 원격저장소에 보내기 | git push |
삭제 | 로컬에서 변경된 모든 파일을 스테이징 영역에서 제거하기 | git reset |
삭제 | stage영역에서 제거하기 (워킹디렉토리 유지) |
git reset <파일이름> |
삭제 | stage영역에서 제거하기 (워킹디렉토리 유지) | git reset HEAD <파일이름> |
삭제 | stage영역에서 제거하기 (워킹디렉토리 유지) | git rm --cached <파일이름> |
삭제 | stage영역에서 제거하기 (워킹디렉토리 유지) | git restore --staged <파일이름> |
삭제 | 로컬 브랜치 삭제 (변경사항 및 푸시되지 않은 커밋이 있을경우는 사용할수 없음) |
git branch -d <브랜치명> |
삭제 | 로컬브랜치 강제 삭제 | git branch -D <브랜치명> |
삭제 | 원격브랜치 삭제 | git push <원격저장소이름> -d <원격브랜치명> |
삭제 | 커밋을 취소하고 해당파일을 staged 상태로 돌림 (변경 내용 보존) |
git reset --soft HEAD^ |
삭제 | 커밋을 취소하고 변경이력을 모두 삭제 (변경 내용 보존) |
git reset --mixed <커밋 로그> |
삭제 | 커밋을 취소하고 해당파일을 staged 상태로 돌림 (워킹 디렉토리에 파일을 보존) |
git reset HEAD~<되돌아가 커밋숫자> |
삭제 | 지정한 커밋 삭제 (돌아갈 로그이후 작성한 내용모두 사라짐) |
git reset --hard <돌아갈 커밋로그> |
복사 | 원격저장소코드 로컬로 내려받기 | git clone [원격저장소주소] |
조회 | git 버전 확인 | git --version |
조회 | 스테이징 영역확인 (현재경로 기준) |
git status |
조회 | 원격저장소이름 확인 및 연결된 저장소 경로 확인 (현재경로기준) |
git remote -v |
조회 | 로컬 브랜치 조회 | git branch |
조회 | 원격 브랜치 조회 | git branch -a |
조회 | 커밋 로그 조회 (git log --help 옵션정보확인가능) |
git log |
연결 | 소스코드를 보낼 저장소를 연결하기 | git remote add <원격저장소이름> <원격저장소URL> |
연결 | 로컬브랜치와 원격브랜치 연결 및 추적 | git push --set-upstream origin <새로운 브랜치> |
생성 | 로컬 브랜치 생성 |
git branch <브랜치명> |
생성 | 로컬브랜치 생성후 해당 브랜치로 전환 | git switch -c <브랜치명> |
반영 | 브랜치 원격저장소에 반영하기 | git push <원격저장소명> <브랜치명> |
변경 | 브랜치 변경 | git switch <브랜치명> |
[상황별 해결] --hard --reset 옵션은 주의!!
- 새로운 브랜치를 생성한후 작업하기 (커밋이력 남지않음)
//기반이될 워킹디렉토리 기준
git switch -c <브랜치명>
git push --set-upstream <원격저장소명> <브랜치명>
- 커밋한 내용 변경하기 : 방법1
git commit --amend -m "변경할내용"
git push -f <원격저장소명> <브랜치명>
- 커밋한 내용 변경하기 : 방법2
git commit -amend
git push -f <원격저장소명> <브랜치명>
로컬에서 커밋메세지를 변경한후 원격저장소에 강제로 푸쉬하는거다. 이경우 나와 같은 브랜치를 사용하는 팀원이있다면 병합시에 충돌이 일어날수있다. 이유는 커밋내용을 변경하면 커밋해쉬도 변경되기 때문이다. 혼자사용한다면 상관없지만 그게 아닌 팀원과의 같은 브랜치에서 작업중이라면 권장하지 않는다.
- 커밋한 내용 삭제
git reset --hard <돌아갈 커밋아이디>
git push -f <원격저장소명> <브랜치명>
지속적으로 업로드중
'Web > Git' 카테고리의 다른 글
branch 삭제하기 (로컬, 원격) (0) | 2023.12.12 |
---|---|
branch명 바꾸기 (0) | 2023.12.12 |
merge 되돌리기 (0) | 2023.12.12 |