Git 간단한 설명
형상관리
소프트웨어의 변경 사항을 체계적으로 추적하고 통제 하는 것으로 소스코드를 한 곳에 모아놓고 버전을 관리 하는 것
( → 협업을 위한 도구, → 코드 변경점 기록)
Git
리투스 토발즈에 의해 개발된 분산 버전관리 시스템으로써 여러명의 개발자가 하나의 프로젝트에서 소스 코드를 관리하는 시스템
Github
Git을 사용할 수 있도록 다양한 기능들과 저장소를 해주는 웹 호스팅 서비스
→ 온라인 백업, 공유, 협업,(온라인 코드 저장소)
Gitlab
소스코드의 모니터링, 테스트 및 배포까지 가능하며 광범위한 DevOps 기능을 사용할 수 있음.
설정과 초기화 (해당 저장소 디렉터리로 이동 후)
git config --global user.name"유저이름"
git config --global user.email"이메일" → github 가입할 때 사용한 이메일 주소
git config --list 저장소별 설정 정보 조회 (위 정보 잘 적용되었는지 확인)
초기화 하기
(git을 본격적으로 사용하기 위해 초기 세팅하다), 프로젝트 시작 전 딱 한 번만 입력
git init
새로운 파일 추가 (git에 올리는 것) , 커밋 → 저장 명령어
git add 파일 or 폴더 → 저장하기 전 저장할 파일 지정
git commit -m "메세지" → 실제로 저장하는 명령어
** 수정된 파일 명(폴더 명)과 원래 있던 파일 명(폴더 명) 같다면 git add시 덮어 씌워짐
git 변경상태확인 (추가된 폴더나 파일, 변경된 파일..등)
git status
저장 내역을 확인하는 명령어
git log
저장소 복제
git clone 저장소 url
새로운 원격 저장소 추가
git remote add origin github 주소(원격 저장소의 주소)
현재 연결된 원격 저장소(github) 확인
git remote -v
git 파일 올리기(원경저장소로 보내기- github)
git push
마지막 커밋 고치기
git commit -m "메시지" - -amend
이미 push한 commit message 수정
"HEAD~n" 몇번째 전인지 고려하고 숫자 변경해 입력
git rebase -i HEAD~1 (직전 commit message를 수정하기 위해 편집모드로 이동)
-> 수정모드(i) -> commit message 앞의 pick -> reword 변경 -> esc :wq (나가기)
-> commit message 수정 -> esc :wq (나가기)
**원격 저장소의 내용과 로컬 저장소의 내용이 다르므로 push XXX
-> 강제(force) push 수행 -> git push origin 경로(브랜치) --force
*****주의*****
force명령어는 commit이 유실될 수 있으므로 사용하는데 조심해야 한다
협업을 하고 있는 경우라면 사용하지 않는게 좋다!!
브랜치 생성 명령어
git branch 브랜치이름 ( 보통 브랜치 이름은 기능으로 많이 한다)
ex) git branch login
브랜치 명 변경
git branch -m 수정할 브랜치 명 (현재 있는 브랜치명 변경)

원격 브랜치 삭제(github)
원래 있던 feature/Reservation_History를 feature/mypage-edit-profile변경 후 feature/mypage_edit_profile 또다시 변경,
원격 저장소(github)에는 feature/Reservation_History만 존재 했던 상태이다. 그러므로 feature/Reservation_History만 삭제
새 브랜치 push하여 원격브랜치에 추가
지역 브랜치 목록 보기 (내가 만든 브랜치 목록, *가 앞에있는게 현재 브랜치)
git branch
원격 브랜치 목록
git branch -r
브랜치 이동 명령어
git switch 브랜치이름 (권장)
git checkout 브랜치이름 (변경된 코드를 되돌리는 보관기능도 있음)
브랜치 합치는 명령어 ( 잘 사용하지않음)
git switch 최종브랜치이름 (main or master) → git merge 합칠브랜치이름
*** merge는 협업할 때 github에서 사용
→ 코드 리뷰를 하기 위함
→ 온라인상에서 다른 팀원들이 변경된 코드를 확인
→ 코드를 합치기전 문제 확인 & 수정할 부분 확인
pull request
선택하여 합치기
git cherry-pick 커밋명
커밋하지 않고 선택하여 합치기
git cherry-pick -n 커밋명
원격 저장소(github)에 있는 폴더만 삭제하기 (아래 순서로 진행)
git rm -r --cached (삭제할 폴더, 파일)
git commit -m "메모"
git push


- Type : Commit이 어떤 유형인지 간단하게 표현 (기능추가, 버그수정)
- Title : Commit의 제목을 표현
- Body : Commit Message의 본문 (간단한 경우 생략 가능)
- Resolves : Commit을 통해 해결한 Issue (생략 가능)
- See also : Commit을 할 때 참고한 Issue(생략 가능)
type: title
body
위 와 같이 작업을 하니 직관적으로는 "type: title"이 보여지고, 해당 파일에 들어가니 body내용이 같이 보여진다.