git & github 정리(배운 것만)
* 윈도우 사용자는 bash 혹은 git bash로 터미널을 사용해야한다. 안 그러면 git 명령어가 잘 안 먹을 때가 있다.
리눅스 명령어
1. pwd (print working directory) : 현재 내가 작업하는 폴더를 보여달라는 뜻
2. ls (list) : 내 폴더 안에 있는 폴더 & 파일 내역을 보여달라는 뜻
- 폴더와 파일끼리는 색깔이 다르다.
3. ls -a (list all) : ls 명령어의 옵션 중 하나 숨겨진 폴더 & 파일(보통 .으로 시작하는 폴더 & 파일)까지도 보여달라는 뜻
4. cd 폴더명 (change directory) : 현재 폴더에 존재하는 폴더(ls 명령어로 확인한 폴더들 중 하나)로 이동해달라는 뜻
- 현재 내가 작업하는 폴더가 변경되는 것
- .. : 한 단계 위의 폴더 (ex. cd ..)
- 폴더명을 /로 연결하여 적으면 한 번에 마지막에 적힌 폴더로 이동 가능
5. mkdir 폴더명 (make directory) : 현재 경로에서 폴더를 생성해달라는 뜻
6. touch 파일명 : 현재 경로에서 파일을 생성해달라는 뜻
- 정확히는 파일의 생성과 파일의 날짜, 시간을 변경하는 명령어
Git
1. Git이란?
- 코드 변경점 기록
- 버전 관리 도구 (형상 관리 도구)
- 소프트웨어의 변경사항을 체계적으로 추적하고 통제하는 것
2. Git 필수 명령어
1) git init : 코드 관리를 시작하는 명령어
- 프로젝트 시작 전 딱 한 번만 입력
- 정확한 프로젝트 경로에서 입력
- 입력 후에 .git 이라는 숨겨진 폴더가 생성되는데 여기에서 코드 변경점을 계속 추적하고 기록
2) git add 파일명 : 저장할 파일을 지정하는 명령어
- git add . : 내 프로젝트의 변경사항을 한 번에 지정하는 방법(.은 현재 나의 경로의 모든 변경된 사항을 의미함)
3) git commit -m "메세지 작성" : 실제로 파일을 저장하는 명령어
- 메세지 부분은 최대한 자세하게 작성
- Please tell me who you are 이라는 에러(계정 설정 관련 에러)가 발생한다면
git config --global user.email "이메일" 과 git config --global user.name "이름" 을 터미널에 입력하면 된다.
4) git status : 저장 여부를 확인하는 명령어
- 수정됐지만 add 안 된 파일, 수정되고 add 된 파일, nothing to commit을 확인 가능
5) git log : 저장 내역을 확인하는 명령어
- 커밋 아이디, 작성자, 날짜, 커밋 메세지 확인 가능
- 커밋할 때 썼던 메세지로 코드 변경점 추측 가능
- git diff : 커밋 아이디를 가지고 코드의 변경을 확인 가능
- git reset : 커밋 아이디를 가지고 과거로 돌아가기 가능
- git log에서 빠져나올 때는 q 눌러서 빠져나오기
Github
1. Github란?
- 백업과 공유, 협업이 가능한 온라인 코드 저장소
2. Github로 코드 백업하기
1) 온라인 저장소(github repository) 만들기
- 깃허브 홈페이지에서 진행
2) 내 코드를 Github repository로 업로드하기
- repository에서 push 관련 git 명령어들을 복사해서 터미널에 붙여넣기
- git remote add origin <github 주소>
- git branch -M main
- git push -u origin main
3. 추가로 수정된 코드 github에 반영하기
1) 코드 수정
2) 코드 저장 명령어 실행
3) git push origin 브랜치명
4. Github 협업하기 + 충돌 해결하기
1) 협력자(collaborator) 등록하기
- Github 레포지토리 -> Settoings -> Collaborators -> Add people -> username or email 입력
2) git clone : 코드 복사해오기
- 폴더 생성 -> git clone <github 주소> .
3) 팀원들이 코드 올리기
- 2.2) 와 순서가 같음
4) git push 전에 git pull (origin main)
- 다른 사람이 git push하고서는 바로 git push가 불가능
- git pull 관련 에러 발생 시 git config pull.rebase false 입력하고 다시 git pull origin main 입력
5) 충돌 해결하기
- <<<<<<< HEAD 삭제하고 ======= 삭제하고 >>>>>>> (커밋아이디) 삭제하고 원하는 코드로 수정하면 됨
- 이후 2.2) 순서대로 다시 push까지 진행