git
- git이란 --> 내 파일과 프로그램에 대한 버전 관리
- 분산 버전 관리 시스템 소프트웨어
- 로컬 저장소 사용
- local 내에서 git을 이용하여 버전 관리

- git/commit 과정
- working directory(작업을 하는 곳) --> staging area
- add 명령어를 통해
- staging area --> git diredtory
- commit 명령어를 통해
- git 명령어
- git add index.html index2.html: 해당 파일들을 staging area로 add
- git add . : 모든 파일 add
- git add *.html: 확장자가 html 파일들 add
- git commit –m “commit msg”: 커밋을 할 때 메시지 작성
- git commit “commit msg”: add와 커밋을 동시에 진행
- git commit: 메세지 없이 커밋
- git status: 현재 깃 저장소 현황 보여줌
- git clean -f: 디렉토리를 제외한 파일들만 삭제
- git log --pretty=oneline --graph: 그래프 형태로 로그 보여줌
- git log --author=Brandon: Brandon이라는 사람이 쓴 로그만 보여줌
- git log --oneline: 로그(히스토리)를 한줄 약식으로 보여줌
- git rm : 로컬 디렉토리와 git 저장소에서 모두 삭제
- git init: 깃 저장소로 초기화
- git diff: 워킹 디렉토리와 staging area 비교
- git diff --cached: commit 내용과 staging area 비교
- git diff commit1 commit2: 커밋과 다른 커밋 비교
git commit --amend: 마지막 파일 메세지 수정
git reset --soft HEAD~: head 하나 이전의 것으로 reset, 최종 파일이 working directory와 staging area에 add 됨
git reset HEAD~2: head 두개 이전의 것으로 reset
git reset --mixed HEAD~: 최종 파일이 staging area에 add가 되지 않은 상태
git reset --hard HEAD~: 최종 파일이 wd, staging area에 add가 되지 않음
git rm sample.txt: sample파일이 untracked인 경우 삭제
git rm --cached sample.txt: git에서는 삭제, wd에서는 삭제x
git clone “Remote repo URL”: 현재 폴더 밑에 생성
git clone “Remote repo URL” abc: abc 폴더 밑에 생성
git clone -b Lab1 “Remote repo URL” abc: 레포지토리의 특정 branch를 clone
git remote: 연결된 이름
git remote -v: 연결된 주소 현황
git remote add origin “remote repo URL”: origin 별칭으로 해당 주소 연결
git remote remove origin: 연결 삭제
git pull 사용법: git pull origin master --> master에 변경된 부분을 origin에 연결된 부분으로 push, 원격 --> 로컬 레포지토리 반영
git push 사용법: git push [remote][branch]
git push origin master: origin은 리모트 주소, master는 현재 브랜치
로컬 --> 원격 리포지토리 반영
git fetch 와 git pull의 차이: fetch는 가지고 와서 새로운 branch를 만듬, pull은 fetch+merg 라고 생각
git branch –h: 브랜치 도움말
git branch -a: 모든 브랜치 의미
git branch: 현재 작업 브랜치
git branch [issue1]: [name]으로 브랜치 생성
git branch –d issue1: 완료된 브랜치 삭제
git branch issue2: issue2 브랜치 생성
git checkout issue2: 이미 생성되어 있는 브랜치로 이동
git checkout –b issue1: 새로운 브랜치 만들고 거기로 이동
git branch –D issue1: 작업 여부와 관계 없이 브랜치 삭제
git checkout master: master 브랜치로 이동
git stash: 다른 작업이 들어온 경우 현재 작업 파일 임시 저장
git stash save: 다른 작업이 들어온 경우 현재 작업 파일 임시 저장
git stash list: 그동안 저장된 리스트 확인
git stash pop: apply + 삭제 --> 원하는 작업 꺼내오고 삭제
git stash apply: 리스트 중 원하는 작업 꺼내와서 작업 진행
git stash drop: 리스트 특정 작업 삭제
git stash clear: 리스트 모든 작업 삭제
git merge TopicA: topicA의 브랜치의 변경사항이 merge됨
git merge --no-ff TopicA: no fast 방식으로 merge
merge conflict 상황설명: 여러 브랜치에서 같은 파일을 수정하고 master 브랜치에서 merge할 때 발생함
merge conflict 해결방법: merge한 파일로 가서 적절히 수정 후, add 와 commit을 진행
revert 와 reset의 차이: reset은 이전의 버전들을 삭제, revert는 돌아갈 파일을 새로 만드는 것(히스토리에서 이력 사항들이 삭제 되지x)
4. git 기본 사용법
1. git init: 폴더를 깃으로 사용 선언
2. git clone [주소]: 주소로 연결
gitignore 파일
- git 저장소에서 버전을 관리할 필요가 없는 파일이나 폴더 작성
- 실행파일, 목적파일 --> 실행할 때 마다 새로 생성
- git 저장소 폴더에 .gitignore 파일 생성 -->
- ex) 그 파일 안에 *.o --> 목적파일은 버전 관리 안한다는 의미
github
- fork: github 작업 중인 레포를 내 레포로 만드는 것
- fork한 파일을 로컬에서 클론 할 때는 https://pat[개인 토큰] 추가해서 클론
- pull request: 수정한 부분을 원래 레포로 반영을 요청