Git과 Github

Git은 왜 필요한 건가요?
1. 버전관리
소프트웨어 개발과정 - 계속해서 뭘 더하고 빼고, 복원하고의 반복
과거 내용을 기록해두지 않으면 예상치 못한 상황에 닥쳤을 때 해결하기 어렵다.
2. 협업
여러 작업자가 참여해야하는 대규모 프로젝트일 시
버전관리 및 각 작업자가 한 일을 기록, 그리고 프로젝트 내용 공유
자주쓰는 git 명령어
git init
.git 폴더 생성 (파일의 모습을 기록하는 공간)
git add (파일명)
기록하고 싶은 파일들을 stage에 올리는 명령어
git commit
현재 파일 모습을 기록하는 명령어(이전 commit 기록과 비교할 수 있음)
git은 다른 버전관리툴과는 다르게 스냅샷(사진처럼 찰칵찰칵!)이란걸 활용해 변경된 내용들만 기록, 때문에 상대적으로 용량이 적게 듦
git commit -m '커밋메시지'
커밋메시지를 인라인으로 같이 작성할 수 있게 해주는 옵션
git log
여태까지의 기록된(스냅샷) 내용들을 확인하는 명령어
git log --oneline --graph
커밋 기록을 한줄로 그리고 아스키 그래프로 보여주는 옵션
git reset (옵션) (되돌리고싶은 시점의 체크섬번호)
과거상태로 돌리는 명령어
(주의!!!! : 원격저장소에 push 되기전 상태일때만 이 명령어를 쓴다. push되고 난 후엔 커밋 기록들이 꼬일 수 있으므로 revert 명령어 사용!)
git reset --hard (되돌리고싶은 시점의 체크섬번호)
돌아가려는 이력이후의 모든 내용을 지워 버립니다.
git reset --soft (되돌리고싶은 시점의 체크섬번호)
돌아가려 했던 이력으로 되돌아 갔지만, 이후의 내용이 지워지지 않고, 해당 내용의 인덱스(또는 스테이지)도 그대로 있습니다. 바로 다시 커밋할 수 있는 상태로 남아있는 것입니다.
git reset --mixed (되돌리고싶은 시점의 체크섬번호)
옵션을 적지 않았을 때 기본값으로 mixed 옵션으로 실행됩니다. 역시 이력은 되돌려집니다. 이후에 변경된 내용에 대해서는 남아있지만, 인덱스는 초기화 됩니다. 커밋을 하려면 다시 변경된 내용은 추가해야 하는 상태입니다.
git revert (되돌리고싶은 시점의 체크섬번호)
복원시키고 싶은 시점의 기록들을 덮어써서 새 기록을 생성 (이전 기록은 모두 유지)
git revert (되돌리고싶은 시점의 체크섬번호)..(되돌리고싶은 시점의 체크섬번호)
되돌릴 커밋이 여러개라면 범위를 주어서 여러개를 선택할 수도 있습니다.
git branch (브랜치명)
가지치기 - 브랜치 생성하는 명령어
git checkout (브랜치명)
확인하고 싶은, 그리고 작업하고 싶은 브랜치를 불러와주는 명령어
git merge (브랜치명)
메인 브랜치에 (브랜치명) 브랜치를 합치는 명령어
git rebase (기준이 되게하고싶은 브랜치명)
현재 checkout된 브랜치의 base가 A 브랜치로 하고 싶을 때 git rebase A
rebase 또한 이미 원격 저장소에 push된 내용들은 rebase 하면 안된다. commit 기록들이 꼬일 수 있다.
다만, rebase된 커밋기록들이 변하지 않았다는 가정 하에 git pull --rebase라는 명령어로 이를 방지할 수는 있다.
때문에 작업 전에 이 부분에 대해 합의를 하고 넘어가는 것도 방법중에 하나이다.
git remote, git fetch, git pull, git push...등등
더 많은 명령어를 자세하게 보고 싶다면? 아래 사이트로~!
https://hyungju-lee.github.io/hyungju-lee/01_study/06_git/git2/index.html
그러면 Github은 뭔가요?
Git이 버전관리를 해줄 수 있게 하는 소프트웨어라면,
Github은 그런 버전관리 기록들을 저장할 수 있는 "원격"저장소를 제공해주는 공간