1. 개념
git : 코드 변경점 기록 st... 버전 관리 도구
github : 백업과 공유가 가능한 온라인 코드 저장소
2. git 필수 명령어
1) git init : 코드 관리를 시작하는 명령어 (initialize; 초기 세팅)
- 초기 세팅이니 프로젝트 시작 전 딱 한 번만 입력하면 됨 (여러 번 입력해도 문제되지는 않음)
* 정확한 프로젝트 폴더(경로)에서 입력해야 함 //잘못하면 데스크탑 전체 파일, 폴더가 다 기록됨
-> 실행결과 initialized empty Git 어쩌구 나옴 + .git 폴더가 생김
//코드를 짜려고 하는 폴더가 현재 경로에 있는지 확인, 다르면 cd명령어로 이동 후 init 실행
2) git add : 코드를 저장하는 명령어. //저장하기 전 저장할 파일을 지정함
3) git commit : 코드를 저장하는 명령어 //실제로 저장하는 명령어
- git add 파일명
- git commit -m "메세지 작성" //메세지 부분은 내가 무슨 코드를 짰는지 자세히 적는 게 좋음
* 내 프로젝트의 변경사항을 한 번에 지정하는 방법
- git add . // . 은 현재 나의 경로의 변경된 모든 사항을 의미함
- git commit -m "메세지 작성"
//***Please tell me who you are : git commit 후 저장이 안 됨... 계정 설정을 하지 않았기 때문
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
4) git status : 저장 여부를 확인하는 명령어
- 실행 결과 중 붉은색 modified : 옆 파일 => 코드에 변경사항이 있지만 저장되지 않은 파일 나타냄
- 실행 결과에 nothing to commit => 다 저장된 것
5) git log : 저장 내역을 확인하는 명령어
- 저장 내역이 역순으로 나타남. 내가 작성한 커밋 메세지로 코드 변경점 추측 가능.
* commit 옆에 나타나는 commit id로 [git diff : 코드 변경 확인], [git reset : 과거로 돌아가기] 사용 가능
//(END) 표시가 뜨고 입력이 되지 않을 때에는 키보드의 q 버튼을 통해 빠져나오기
6) git push : 추가로 수정된 코드를 github에 반영하기
- 코드 수정
- 코드 저장 명령어 실행 : git add. & git commit -m "메시지"
- git push origin 브랜치명 // 브랜치 배우기 전까진 main으로 작성하기
// git bash 열고, @@@ ... or push an exisiting repository from the command line 의 3줄을 복사해 붙여넣기
--> 새로고침하면 파일 저장된 게 반영됨
@@업로드할 프로젝트 폴더를 visual studio에서 열라고 하셨는데... git bash에서는 어떻게 하는거지
git remote add origin https://github.com/내이름/지정한이름.git
//github 주소를 origin이라는 이름으로 저장 -> git push origin 브랜치명
git branch -M main
//원래 master가 기본 브랜치였음. 현재 브랜치명(master)를 main으로 바꾼다
git push -u origin main
//매변 git push origin main 적기 귀찮으니까 git push만 입력해도 되게 변경
//다른 사람이 이미 git push하고 내가 git push 하려고 하면 rejected 됨 (git push 전에 git pull 하라고 뜸)
7) git clone : 코드 복사해오기 (팀원)
: 깃허브의 코드를 내 컴퓨터로 가져올 수 있음
- github에서 <>Code 버튼 누른 후, github 주소를 복사하기
- 코드를 작성할 폴더를 만들기
- git bash에서 해당 폴더를 열고, @@@이거 pwd로 확인하고 들어가는건가..? 아래 명령어 입력하기
// 마지막에 . 붙이지 않으면 새로운 폴더가 다시 만들어짐...
ㅇ근데 기존에 코드가 작성되는 폴더가 있잖아... 그럼 안드로이드 스튜디오나 다른 프로그램으로 새 프로젝트 만든 뒤에 그 폴더에서 git bash 실행해도 되는건가??ㅇ
git clone github주소 .
//코드 수정 후 코드 저장 명령어 실행 (git add . & git commit -m "메세지"), git push origin 브랜치명(일단 main)
//협력자 collasborator 등록 : 팀장 or 레포지터리 만든 사람이 github > settings > collaborators > add people 누르기
// add a collaborator to 지정한이름 => 깃헙 이메일이나 유저네임 입력, 각자 수락하면 됨
8) git pull : 다른 사람이 변경한 코드 내 코드에도 가져오기. 내 코드에 적용하고싶을 때
//git clone : 내 코드가 없을 때 사용.
- 변경사항을 git pull로 먼저 가져온 뒤, git push를 해서 올려야 함
- 코드 수정 후 git push origin 브랜치명(일단 main)
- git pull을 먼저 하라는 에러 발생 시 git pull origin 브랜치명
// 첫 pull에서 에러가 뜬다면 (divergent branches and need to specify~ 어쩌구) 힌트 중간의 #merge 옆 문장을 입력하기
// 그 뒤 git pull origin main 명령어 입력 @@@이부분 더 공부하기
//터미널에 아무것도 입력이 안되는 vim 에디터가 뜬다면
// 키보드의 esc 누른 뒤 :wq 누르고 엔터 누르기
//git pull 명령어로 가져온 뒤 코드가 이상해진 경우
: 충돌... CONFLICT = 같은 파일의 같은 위치에 코드가 변경된 것
//automatic merge failed; fix conflicts and then commit the result. 해결 후 다시 커밋해라
<<<<<<< HEAD (Current Change) // 내가 바꾼 변경점들이 여기있다
aaaa
======= // 위, 아래 둘 중 무엇으로 할건지
ddddddd //github에서 누군가 변경한 코드
>>>>>>> 438295482908900 (Incoming Change) //들어온 변경점
<<<<<<< HEAD (Current Change) // 이거 지우고
aaaa
======= // 이거 지운 뒤
ddddddd
>>>>>>> 438295482908900 (Incoming Change) //이거도 지우고
남은 것 중 뭐로 할건지 선택하기
<내것도 다른사람것도 github에 넣을거라면>
aaaa
dddddd
//@@이걸 터미널에서 함...? 에러 글자들을 삭제할 수 있는거...? 해보면 알게되려나ㅠ@
9) git branch : 브랜치(복사본) 생성 명령어
git branch 브랜치이름
- 브랜치 확인 명령어
git branch
//(END) 뒤에 키보드 q로 빠져나가기
- 브랜치 이동 명령어
//첫번째 방법
git switch 브랜치이름
//두번째 방법
git checkout 브랜치이름
- 브랜치 한 번에 생성 & 이동
//첫 번째 방법
git switch -c 브랜치이름
//두 번째 방법
git checkout -b 브랜치이름
- 새로운 브랜치에서 수정된 코드 저장
git add .
git commit -m "저장 메세지"
- 브랜치 이동하여 비교하기
//첫번째 방법
git switch 브랜치이름
//두번째 방법
git checkout 브랜치이름
10) git checkout
//checkout은 다른 기능들도 있어서 브랜치 이동 관해서는 switch를 많이 씀
11) git merge
- 브랜치 합치는 명령어 (잘 안 씀...)
git switch 최종브랜치이름 // <- main으로 이동하기
git merge 합칠브랜치이름 //main으로 당겨온다 st
12) pull request :
- 터미널 말고 github에서 합치는 것! (코드 리뷰가 가능함)
git add .
git commit -m "저장할 메시지"
//git merge가 아니라 일단 깃헙에 업로드하기
git push origin 현 브랜치명(main말고)
- compare & pull request 누르기
- base (최종 브랜치) compare (기능 브랜치)
- create pull request 누르기
- files changed = 코드 변경점 확인 (코드리뷰)
- merge pull request 누르면 merge됨
- git switch 브랜치명 (아마 main)
- git pull origin 브랜치명(아마 main... 가져올 브랜치?) 으로 당겨오기
13) git reset (<-- 공부하기!!)
https://daffy-slime-268.notion.site/2-Git-Github-cd38790900d24891bfdf51ba89e4bed7
- git reset --hard 후 돌아가고 싶은 커밋의 commit 뒤의 5~6글자 붙여넣기
명령어 | 역할 |
git reset --hard | 해당 커밋 id의 상태로 이동 working directory와 index 영역 모두 초기화 |
git reset --mixed | 해당 커밋 id의 상태로 이동 working directory는 변경하지 않음, index 영역은 초기화 |
get reset --soft | 해당 커밋 id의 상태로 이동 working directory, index 영역 모두 변경되지 않음 |
영역 | 역할 | 위치 |
working directory | 프로젝트 디렉토리 개발자가 직접 코드를 수정하는 공간 |
. |
index (staging area) | working directory에서 repository로 정보가 저장되기 전 준비 영역 | .git / index |
repository | 파일이나 폴더를 변경 이력별로 저장해두는 곳 | .git |
stash | 임시적으로 작업사항을 저장해두고 나중에 꺼내올 수 있는 영역 | .git / refs / stash |
//git reset HEAD^ (가장 최신 커밋 1개 취소)??
//git reset HEAD~n (가장 최신 커밋 n개 취소)??
14) git revert
: 과거 커밋을 다음 커밋으로 만들어 되돌아감
- git revert 커밋id
//CONFLICT 충돌 발생하면 원하는 형태로 코드 변경 후 git add . & git commit 명령어 입력
// 개발용 develop 브랜치를 따로 만들기 (테스트 용!)
main 브랜치 : 배포용 / develop 브랜치 : 테스트용 / 기능 브랜치 : 기능 개발용
1. 협업 관련 과정
1. 팀장 : 초기 코드 작성 및 github 업로드
1) 폴더 생성
2) 초기 코드 작성
3) git init, add, commit
4) github 레포지토리 생성
5) git push 로 github 업로드
2. 팀장 : dev 브랜치 생성
1) git switch -c dev (로컬에서 dev 브랜치 생성)
2) git push origin dev (github에도 반영됨)
3) github에서 dev 브랜치를 default로 설정 (settings > default branch > 양쪽화살표 > 바꾸기)
4) 팀원들을 collaborator로 등록 (settings > colaborators > add people > )
5) 팀원들 : git clone 하기 (code 들어가서 주소 복사하고 프로그램 열어서 git clone 주소 . )
2. 기능 개발 시작
1) 기능 브랜치 만들기 (dev)
2) 브랜치 만들기 (git switch -c feature/signup)
3) 코드 작성 후 git add . / git commit -m "저장할 메시지" / git push origin feature/signup
4) github로 가서 pull request 생성 (base, compare 확인하기)
5) merge 버튼이 눌리지 않은 경우 (충돌) -> @@@@@@
1. 코드 작성자 : 리뷰 요청하기
1) conversation 창에서 reviewers의 사람들을 클릭하면 됨
2. 코드 리뷰어 : 리뷰하기
1) files changed로 가서 변경된 것을 보고 + 를 누르고 start a review 누르기
2) 여러 개의 리뷰들을 다 마무리 했으면 우측 상단의 finish your review 누르기
3) 메시지 남긴 뒤 3개 중 하나 누른 뒤에(메시지 남기는 것 / 합쳐도 되겠다는 / 고쳐야 한다는... ) submit reviews 누르기
3. 합치기 전 내 로컬에서 충돌 해결 및 테스트
1) 기능브랜치에서 git pull origin dev로 끌고오기 (feature/signup 에서 git pull orogin dev) //내 로컬에서 먼저 합치기
3. 추가 기능 개발
1. 내 로컬의 dev에도 변경 사항 반영
1) dev 브랜치로 이동 (git checkout dev 혹은 git switch dev)
2) git pull origin dev (당겨오)
2. 다음 기능 개발
1) 기능 브랜치 생성 및 코드 작성
2) git add, commit, push
3) pull request 생성 및 코드 리뷰
4) 내 로컬에서 충돌 해결 및 테스트 (git pull origin dev)
5) 코드 업로드 및 merge
//팀장이 main과 dev 브랜치에 코드 올려뒀을 때
1) 내 컴퓨터에 main과 dev 브랜치 대해 clone 하기
2) 내 컴퓨터에 개발용 브랜치 만들고(git switch -c <브랜치명>) 코드 짜기
3) github의 개발용 브랜치에 add git push 하고 pull request
4) github의 dev 브랜치의 코드들 git pull origin dev 로 가져오기(다른사람들의 수정, merge 코드 받아오기)
5) github의 개발용 브랜치에 add git push 하기
6) dev에 merge 하기
7) 내 컴퓨터에도 반영되게 git pull 하기
8) 다 됐다 싶으면 base를 main으로, compare를 dev로 해서 merge하기
'git' 카테고리의 다른 글
[git] 리눅스 명령어 (0) | 2024.03.07 |
---|