본문 바로가기
git

[git] git & github의 개념, git 필수 명령어

by 젼젼39 2024. 3. 7.

 

 

 

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