Git intro
1. 버전관리란?
각 버전 별로 변경된 이력들을 저장하는 작업이고, 이전버전으로 되돌아가야 경우 유용하며, 어떤사항이 변경되었는지 코멘트를 남겨 변경사항을 쉽게 확인할 수 있다. 그러므로 백업과 협업에 아주 유용하다.
2. git이란
git이란 개발자의 코드를 효율적으로 관리하기 위해 개발된 '분산형 버전 관리 시스템' 이다.
3.github란?
Github란 Git Repository를 관리할 수 있는 클라우드 기반서비스이다. 쉽게 말 하면 git은 커피고 github는 카페와 같다
4.Git repositody란?
내가 작업하는 소스 코드 폴더가 버전 관리를 받게 하기 위해서는 내 폴더를 Git의 관리 아래에 두어야하고,
Git으로 관리되는 폴더를 Git repository 라고 합니다.
Git repository 는 Remote Repository와 Local Repository 두 종류의 저장소를 제공한다.
- 다른 사람이 Remote Repository에 올려 놓은 소스 코드를 내 Local Repository 로 가지고 올 수도 있다.
- 2.작업할 때는 Local Repository에서 할 수 있고 내가 작업한 코드를 공유하려면 Remote Repository에 업로드해 여러 사람이 함께 공유할 수 있다
Git 설치
터미널에 git 입력
Git이용에 필요한 환경설정
1.사용자 정보 설정
- 사용자 정보 입력
git config --global user.name "나의 사용자 이름" git config --global user.email "내 이메일 주소"
터미널에 입력한 이름과 주소는 git 커밋내역에 등록됨
2.에디터 설정
- Git에서 커밋 메시지를 기록할 때, 특히 merge commit 확인 메시지가 나올 때 텍스트 에디터가 열린다
- Git에서 사용할 에디터 입력
git config --global core.editor nano
3.SS키 설정
- SSH?
ssh는 Secure shell의 줄임말로, 보안이 강화된 shell 접속을 뜻한다.
CLI환경에서 다른 pc에 접속하거나(clone) 요청할 때 사용하며,
ssh키는 두 개의 키가 서로 대칭이 되지 않는 형태로 존재하며 이를 통해 사용자를 인증한다.- SSH키 생성
- 1.
ssh-keygen
명령어는 경로 ~/.ssh./에 두 파일 id_rsa와 id_rsa.pub 을 생성한다.
이 두파일은 SSH키 페어라고 하고
이중 id_rsa.pub은 누구에게나 공개해도 되는 공개키 (publick Key),
id_rsa는 개인키(secret,privat key)이다- 2.공개키(publick key) 복사
cat ~/.ssh/id_rsa.pub
터미널에 출력된 키를 복사- 3.Github에 공개키 등록
가져와서 작업하기
0. 전체적 흐름
1. Fork - 내 원격 저장소로 가져오기
(remote Repsitory->My remote Repository)
2. clone -내 컴퓨터저장소로 가져오기
(My remote Repositoey->local Repository)
git clone (Repository address/ssh)
3. add -commit할수있게 만들어주기
1)커밋전 Local Repository에 변경된 파일들 확인하기
git status
//파일들의 상태확인가능
- unmodified : 기존에 clone했던 파일을 수정하지 않은 상태
- staged : commit이 가능한상태
- Modified : 기존에 clone했던 파일을 수정한 상태
2)commit가능하게 add해주기
git add 파일이름
commit할수있게 staging area로 옮겨줌
터미널 화면에 변경없음
git add .
unstaged 상태인 모든파일 한번에 추가가능(그래서 조심해야함)
3)작업한 코드를 싹 밀어버리고 싶을때(commit전)
git restore 파일이름
변경사항을 폐기하는 명령어
처음 clone상태로 돌려줌4. commit- 로컬저장소로 보내주기
(staging area -> local Repository)
1)Git commit -m ‘메시지’
m옵션을 통해 커밋할 내용의 코멘트 작성가능
2)git reset HEAD^
로컬에만 커밋되어있다면 reset명령어를 통해서 commit을 취소할 수 있다
HEAD^를통해 하나만 커밋 취소시킴
3)-git log
남긴 commit들이 잘 기록되었는지 확인하기(터미널에서)/종료는 q
5. push - 내 원격 저장소로 올리기(local -> remote)
git push origin branch
git push origin main
git push pair dev
6. pull Request- 내가 제안한 코드 변경사항에 대해 반영 여부를 요청
- 변경 사항에 대해서 함께 작업하는 이들에게 알리는 것 (PR)
- 내 remote Repository에 push하면 깃허브 웹사이트상의 해당 remote repository에 compare&pull request라는 버튼을 확인할 수 있음
함께 만든 git 프로젝트 올리기
1.내 디렉토리를 git의 관리하(git repository로)에 들어가게 만들기
git init
(현재위치가 작업중인 디렉토리)
1)내가 직접 만든 디렉토리를 git의 관리하(git repository)에 들어가게 만들기
2)새로운 repository를 초기화
3)local repository가 생성됨2. 내 디렉토리를 local repositorty를 remote repository에 연결
git remote add origin <repository>주소
1) local repository를 remote repository와 연결
2) 터미널 변화 x
3)주소는
3. 내 local repositorty와 상대방의 repository를 연결해주기
git remote add <상대방이름> <상대방remoteRepository주소>
- 상대방의 remote repository와 연결해 github repository를 함께 공유할 수 있다
- 터미널 변화 x
4. 현재 local repository와 연결된 remote 모든 repositroey 목록확인
git remote -v
- 현재의 local repository와 연결된 모든 remote repsotiry 목록 확인가능
5. 상대방이 작업해 commit해놓은 코드를 git pull 로 받아오기/병합
gut pull <상대방이름> <branch>
(git pull pair master)
- 명령어를 통해 상대방의 remote repository에 있는 작업 내용을 받아올 수 있다
- 받아온 내용은 자동 병합 된다.
- 나와 상대방이 동일한 라인을 수정한경우 충돌이생겨 병합에 실패한다
- merge conflict가 발생해 automatic merge에 실패했다고 터미널이 알려줌
- git status를 통해 어떤 파일이 충돌하고 있는지 확인할 수 있다
- Accept Current Change 수정방법
- Accept Incoming Change 수정방법
- Accept Both Changes 수정방법
- 수정후 병합 다시공부후 작성