Achievement Goals
- Git의 환경설정을 할 수 있다.
- 버전 관리 시스템의 필요성을 이해할 수 있다.
- Github와 Git의 관계에 대해 이해할 수 있다.
- Repository에 대해 이해할 수 있다.
- Local Repository와 Remote Repository의 차이를 이해할 수 있다.
VCS(Version Control System) : 텍스트 에디터를 종료했어도 이전 코드를 보존할 수 있게 하는 시스템
- Git : vcs중 가장 많이 쓰이는 도구
파일을 매번 복사해서 저장하는 일도 번거롭다 (최종-최종1-진짜최종-...)
- Git이란 개발자의 코드를 효율적으로 관리하기 위해 개발된 '분산형 버전 관리 시스템'이다.
특정시점에 생성된 백업 복사본을 snapshot이라고 하고, 이를 만드는 작업을 commit 이라 한다.
Git에서 변경된 부분 commit으로 확인할 수 있다. 또한 개발자들의 SNS인 Github에 연동하여 전세계 개발자들과 공유하고 기여할 수 있다.
Git repository
Remote repository Local repository 코드공유,협업 개인작업
Fork
- React는 온라인 상에 올라와있는 오픈 소스다.
Remote repository에 소스코드가 올라와 있다.
React 프로젝트에 contribute 하기 위해서는 먼저 react 원격 저장소를 내 원격 저장소로 가지고 오는 작업이 필요하다. 이 과정을 Fork라 한다.
- Fork를 하고나서 나의 Remote repository에서 수정하기 위해선 clone 과정을 통해 remote repository에 있는 코드를 내 컴퓨터(local)로 가져온다.
- 내 컴퓨터에서 react 소스코드 변경 작업을 완료한 후 이 내용을 commit을 통해 저장한 뒤,
Remote repository에 push 하는 작업이 필요하다.- 이렇게 push를 완료하고 Github에서 pull request라는 기능을 통해,내가 제안한 코드 변경사항에 대해 반영 여부를 요청할 수 있다.
git 설치코드
sudo apt install git git --version
git 연동하기
$ git config --global user.name "나의 사용자 이름" $ git config --global user.email "내 이메일 주소"
--global : 처음에 한 번만 입력하면 된다.
commit editor 변경 (defualt : VSC)
$ git config --global core.editor nano
SSH(Secure SHell) 키 생성
ssh-keygen
- idrsa는 비밀키(secret key), id_rsa.pub은 공개키(Public key)라고 한다.
cat ~l.ssh/id_ras.pub 을 통해 공개키를 복사
Github에 공개키 등록
- Settings -> SSH and GPG keys
연동확인
git clone SSH주소
Github CLI 설치
curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg 또는 sudo gpg --dearmor -o /usr/share/keyrings/githubcli-archive-keyring.gpg $ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" 또는 sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null $ sudo apt update $ sudo apt install gh
Github 로그인 시도
gh auth login
Advanced Challenge (optional)
- Git Repository의 commit되지 않은 변경 사항을 취소할 수 있다.
reset HEAD <file> checkout --<file>
- 협업을 위한 git 개념을 이해할 수 있다.
혼자 작업 workflow
git status
add : 파일을 commit 할 수 있는 상태로 만들어 준다.
restore : 변경사항을 폐기(discard changes)하는 명령어다.
이처럼 git status를 통해 어떤 파일이 어떤 상태에 있는지, 그리고 해당 파일에 대해
어떤 행동을 할 수 있는지 알 수 있다.
git add. 명령어로 staging area에 unstaged 상태인 모든 파일을 한번에 추가할 수 있다.
하지만 이 명령어를 사용할 때는 올리지 말아야 할 파일까지 모두 add 될 수 있기 때문에 주의해야 한다.
commit 메시지를 작성하기 위해서는 -m 옵션을 통해 코멘트를 작성할 수 있다.
git commit -m
좋은 commit 메시지 작성 방법 : https://chris.beams.io/posts/git-commit/
2. git clone 을 사용해서 local repository로 가져오기
3. pair의 local repository를 연결하기
4. 수정한 local repository를 commit 하기
5. github으로 push 하기
6. 자신의 local repository로 가져오기
7. 수정한 local repository를 commit 하기
8. github으로 push 하기
9. 자신의 local repository로 가져오기(6번) (역할바꾸기)
1. git auth login을 통해 CLI와 Github계정을 연결
1. fork
2. git clone 'url' 주소 안되면 git clone 'ssh' 주소
3. 파일확인 후 nano file명 혹은 code .. 로 vsc에서 수정 한다.
4. git add file명 + git commit -m '메시지' 남긴다. (github의 commit과 같은 개념)
5. git push origin master (commit한 파일을 내 repo에 전송)
6. git pull sth master (상대방이 내 repo를 끌어 가져가는 것)
SSH로 등록했으면 SHH로, HTTP로 등록했으면 HTTP로 한다.
- im-sprint-git-workflow를 fork 한다
- git clone 주소
- ls로 repository 확인
- 해당경로로 이동 (까먹지말기)
- code .(vsc) 들어가서 파일수정한다.
- git restore READ.md -> READ.md 적은 내용 삭제
- git add (git add* git add .)
- git status로 staging area(파일이 추가된건지) 인지 untraced files(파일이 추가안된건지)인지 확인 git diff로 수정된 내용을 확인해볼 수 있다.
- git commit -m '메시지내용'
- git log (커밋된 내용 파악) -> q 입력하면 화면 나갈 수 있음.
- git push origin master (upstream - 원래주인, fork를 해서 내껄로 가져오면 - origin.)
- pull request 누른다. (관리자에게 pr하는 과정)
<페어모습> -> repository를 새로 만들어서 연습해보기 neofetch : 내 os가 무엇인지 알려줌
- git remote 동료이름 동료repo주소
- git remote -v 로 연동 확인
- git remote remove 동료이름 하면 연동한 동료 주소 삭제
- code. 들어가서 파일수정
- git add README.md
- git status
- git commit -m '메시지'
- 동료가 같은 파일을 수정
- git push origin master
10.git pull 동료 master- auto merge가 발생하는경우, 같은파일 다른줄에서 작업한경우
- git log 눌러서 자동병합 확인하고 commit까지 작성된걸 확인
- git push origin master
- git pull 동료 master
- 충돌이 발생하는 경우(같은 줄에서 작업)
- automatic merge failed : fix conflicts and then comit the result.라고 뜸
- git add . (변경된 모든파일들을 모두 추가한다)
내거를 commit하지 않고 pull을 하면 merge가 안되고 내건 사라진다.
직접 repo를 만들면 서로에게 access 권한을 줘야 한다.
주소 때문에 에러나는게 궁금한데요, add origin, add pair 주소 입력할 때 pair 주소는 HTTPS로 입력하고, origin 주소는 HTTPS/SSH 둘 다 상관없는건가요??
git reset HEAD^, HEAD^^^ 커밋1개, 커밋3개 지울 수 있다.