일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- removeCookie
- https://www.daleseo.com/js-array-slice-splice/
- @redux-toolkit
- children vs childrenNodes
- slice/splice/split
- 자바스크립트
- User Flow
- 내장고차함수
- dom
- https://dasima.xyz/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%A0%9C%EA%B3%B1-math-pow-%EA%B3%84%EC%82%B0/
- toString#String
- UX
- 자바스크립트#JS#var#let#const#undefined#null
- cmarket
- js
- variable#function
- 자바스크립트#JS#slice#splice
- CSS
- redux상태유지
- Beesbeesbees
- JS#3일차달리자#초반인데#시간금방~
- for~in/for~of
- https://developer-talk.tistory.com/299
- 노드교과서
- UI
- react
- 헷갈린다~
- 자바스크립트#조건문#문자열
- ㄷㅌ
- https://lo-victoria.com/introduction-to-redux-toolkit-for-beginners
- Today
- Total
Daily Front_Minhhk
[GIT] Git협업하기 본문
학습 목표
- 일반 디렉터리와 깃 리포지토리와의 차이점에 대해 설명할 수 있다.
- git staging area에 대해서 설명할 수 있다.
- git add로 git staging area의 내용을 변경할 수 있다.
- git add와 git commit의 차이점에 대해서 설명할 수 있다.
- git commit으로 로컬 깃 리포지토리에 코드 변경점을 기록할 수 있다.
- 로컬 깃 리포지토리와 원격 깃 리포지토리 github 차이점에 대해 설명할 수 있다.
- git clone이 원격 깃 리포지토리를 가져온다는 것을 이해한다.
- git pull과 git push에 대해서 이해한다.
- git pull과 git push로 로컬 깃 리포지터리와 원격 깃 리포지토리의 내용을 쉽게 주고받을 수 있다.
✅ https://mylko72.gitbooks.io/git/content/
깃에 대하여 자세하게 설명이 되어있다! 참고
로컬 Git 리포지토리(Repository)란?
- 우선 Git이란 개발자의 코드를 효율적으로 관리하기 위해서 개발된 '분산형 버전 관리 시스템'이다.
- 그리고 Git에서 코드를 저장하는 공간을 리포지토리라고 한다.
- 리포지토리는 자신의 컴퓨터의 작업 공간(local)에 위치한 로컬 Git 리포지토리와, Github 등의 원격(remote) 공간에 위치한 원격 리포지토리로 구분할 수 있다.
Local Git repository
로컬 Git 리포지토리(Repository)란?
- 우선 Git이란 개발자의 코드를 효율적으로 관리하기 위해서 개발된 **'분산형 버전 관리 시스템'**이다.
- 그리고 Git에서 코드를 저장하는 공간을 리포지토리라고 한다.
- 리포지토리는 자신의 컴퓨터의 작업 공간(local)에 위치한 로컬 Git 리포지토리와, Github 등의 원격(remote) 공간에 위치한 원격 리포지토리로 구분할 수 있다.
git init
작업 공간에 local Git repository를 생성한다.
- 일반적인 폴더에 Git repository를 추가하면 개발자는 Git을 이용하여 자신의 프로그램 버전 관리를 할 수 있다. Git repository를 추가하기 위해서는 git init 명령어를 입력하면 된다.
git add
Untracked files를 Staging area로 추가해서 Git의 관리하에 둠
- 로컬 환경에 있는 디렉토리에 Git 리포지토리가 생성되었다면 이제 index.html, sytle.css의 변경사항을 Git으로 관리할 수 있다. 각각의 파일에 코드를 작성한 후, 이 코드를 하나로 모아두는 과정을 거치게 되는데 이 공간을 staging area라고 한다.
git status
staging area로 잘 옮겨졌는지 확인하는 명령어
- staging area로 잘 옮겨졌는지 확인하기 위해서는 git status 명령어를 입력한다. 현재 디렉토리에 Git 리포지토리가 잘 설치되어 있다면, 해당 터미널에서 Git 리포지토리의 상태를 확인할 수 있다. 변경이 되었으나 staging area로 옮겨지지 않은 파일은 빨간색 글씨로 표시된다. 변경 사항이 staging area에 잘 옮겨졌다면 해당 터미널에 파일명이 초록색으로 표시된다.
Git 리포지토리 변경 사항 파악하기
- staging area에 위치한 파일 내용이 추가로 변경된 경우, git status 명령어로 다시 현재 Git 리포지토리 상태를 확인할 수 있다.
git commit >> 아래 내용 참조~
- staging area에 있는 파일은 commit이 가능하다.
- git add <경로명> : 경로에 있는 파일을 staging area로 넣는 명령어
- gir add . : 모든 변경 사항을 한번에 업로드,, 현재 경로를 뜻하는 .
- staging area : 온전히 저장하고 싶은 코드를 모아놓은 묶음
- commit
- staging area의 코드 묶음을 저장하기로 결심하고 (git commit)
- staging area 코드의 용도를 적어두는 행위 (커밋 메시지 -m "commit message")
commit의 원칙
- commit은 작은 단위로 자주 하는게 좋다. Git commit 기록이 상세하게 되어있으면 아래와 같은 장점이 있다.
- 코드를 잘못 적는 경우에, 이전 기록을 더 쉽게 복원할 수 있다.
- 누가 해당 코드를 수정했는지 쉽게 파악할 수 있다.
- merge, rebase등 기능에 날개를 달아주는 기반이 된다.
- commit 메시지는 짧고 간결하게 사실적으로 작성한다. Git commit 메시지는 동료 개발자가 참고할 수 있기에 짧고 간결하고 사실적이여야 한다.
# Good: 기능(feat) 구현을 확인 가능, 정확한 기술 용어 사용, 짧고 간결함
git commit -m "feat: 인스타 게시글 조회 페이지네이션"
# Bad: 커밋 타입 구분 X, 만연체, 사실 여부를 판단하기 어려운 "효율성"에 대한 코멘트
git commit -m "더 효율적인 인스타 게시글 조회 기능 구현함"
# Very Bad: 어떻게 나은 형식인지 판단하기 어려움, 어떤 기능인지 확인이 어려움
git commit -m "좀 더 나은 형식"
Staging area란?
Commit 하기 전에 내용을 기록하는 장소
- 늘 commit하기 전에 git status로 staging area의 상태를 확인하는 것이 좋다.
원격 Git 리포지토리란?
- 원격 Git 리포지토리(줄여서 원격 리포지토리)는 자신의 컴퓨터(로컬 환경) 작업 공간에 위치하지 않는 Git 리포지토리이다.
- 개발에 대해서 검색해보면 쉽게 접할 수 있는 Github의 여러 리포지토리가 대표적인 원격 리포지토리이다.
- 공개된 Git 리포지토리의 경우, 여러 사람이 함께 공유 가능하다.
원격 Git 리포지토리 다루기
- Github에서 원격 리포지토리를 생성한다.
- 로컬 리포지토리에 원격 리포지토리 git url을 등록한다. (git remote add)
- 로컬 Git repository에 기록한 내역을 원격 Git repository에 push한다. (git push)
git remote add <name> <URL>
- git remote add는 로컬 리포지토리에 원격 리포지토리 주소를 등록하는 명령어이다. 쉽게 원격 리포지토리를 파악하기 위해 이름을 지정해줄 수 있고, 이름 뒤에 원격 리포지토리 주소를 적으면 작동한다.
- <name>: 앞으로 로컬 리포지토리에서 원격 리포지토리 주소를 대신할 이름
- <URL>: 원격 리포지토리 주소
git remote -v 명령어로 원격 리포지토리가 잘 연결되었는지 확인합니다.
git push
git push 는 로컬 리포지토리에 기록한 내역을 원격 리포지토리로 옮기는 작업입니다. git push는 새롭게 생성한 원격 리포지토리에 기존 커밋 기록을 옮기거나, 기존 원격 리포지토리에서 일부 변경된 내용을 옮기는데 사용할 수 있습니다.
git push <remote> <branch>
다른 CLI 명령어처럼, git push 도 매개변수를 가질 수 있습니다.
<remote> 에는 원격 리포지토리의 이름을 입력하고, <branch> 에는 브랜치 이름을 입력합니다.
예를 들어, 로컬 리포지토리의 기록을 원격 리포지토리 origin의 main 브랜치로 push하려면 git push origin main 을 입력합니다.
git push로 원격 리포지토리에 로컬 리포지토리 변동 사항 업데이트하기
git remote add로 로컬 리포지토리에 원격 리포지토리 주소를 잘 등록했다면 이제 git push 를 할 수 있습니다.
git push -u origin main 명령어를 입력합니다.
이 명령으로 원격 리포지토리 origin의 main 브랜치에 로컬 리포지토리 main 브랜치 내용을 업데이트하게 됩니다.
Fork란?
- 포크는 기존의 잘 만들어진 프로젝트에 변화를 주거나 새로운 것을 시도를 해보기 위해 리포지토리를 복사하는 것을 의미한다.
- 기존의 프로젝트에 영향을 미치지 않기 때문에 서로의 프로젝트에 영향을 주지 않는다.
- 또한 라이센스까지 함께 복사가 되기 때문에, 공개되어 있고 라이센스 명시가 제대로 되어있는 프로젝트는 라이센스만 잘 지키면 포크해도 문제가 없다.
- 보통 Github 원격 리포지토리를 자신의 Github 원격 리포지토리로 포크한다.
포크 후 할 수 있는 일
- 자신의 컴퓨터의 로컬 리포지토리로 git clone하여 따로 개발하기
- (작업하기 위해 git clone + HTTPS, SSH 주소 값)
- public 프로젝트에 버그 수정 및 기능 추가 요청 (push & pull request)
- public 프로젝트에서 새로 업데이트 된 내용을 pull
종합 퀴즈
git reset HEAD^
→
git reset, revert로 이전 커밋으로 돌리기
reset, revert 차이 (revert 를 쓰자~ 링크 참조)
둘다 이전 커밋으로 되돌린다는 점에서는 동일하나
github 같은 온라인 저장소에 올라가 다른 사람간 코드 공유의 유(revert)무(reset)에 따라서 달라집니다.
https://kyounghwan01.github.io/blog/etc/git/git-reset-revert/#이-작업을-하는-이유
git remote
이제 다시 명령 프롬프트를 켜서 프로젝트 폴더로 갑니다. git remote가 바로 원격 저장소를 관리할 수 있는 명령어입니다.
git remote add origin https://github.com/[이름]/gitExample origin
이라는 이름으로 원격 저장소 주소를 등록합니다.
이제부터 origin이라는 이름을 사용하면 방금 전에 우리가 만든 저장소에 접속할 수 있습니다.
(굳이 origin이라고 안 하고 다른 이름으로 해도 됩니다.)
만약 origin이라는 원격 저장소를 지우고 싶다면 git remote remove origin하면 됩니다.
Github 에서 공동 프로젝트 Repository를 생성했어요. 각자의 Repository로 Fork 하고 clone 을 받았습니다. 내가 맡은 회원가입 기능을 구현하기 위해서 feat/signup 이라는 브랜치를 생성하고 해당 브랜치로 이동해 볼까요?
→
git checkout -b feat/signup
(브랜치 생성과 이동 동시!!)
구글 로그인 기능도 추가를 해 보려고 시도하다가 어려워서 그만두었습니다. 작업하던 코드를 잠시 다른 공간에 저장해 둘 방법이 있을까요?
→
git stash
// 현재 작업 파일 스태시에 저장
git stash
// 특정 이름으로 스태시 저장
git stash save NAME
// stash list
git stash list
// 가장 최근 stash 가져오기
git stash apply
// n번 stash 가져오기
git stash apply stash@{n}
// n번 stash 지우기
git stash drop stash@{n}
// stash 모두 지우기
git stash clear