코드 파일이 변경해 온 역사를 기록해둘 수 있는, 버전 관리 시스템.
git init
: 로컬 폴더 위치를 git으로 관리할 수 있게끔 git에 경로를 등록하여, 해당 폴더를 git local repository로 만든다. 폴더 내에 .git
폴더가 생성되며, 폴더 내 모든 변경사항이 .git
내에 기록된다..git
폴더 등 로컬 환경에 있는 저장소를 local repository, github과 같이 온라인 서버에 있는 저장소를 remote repository라 한다.)git add
: git system이 파일 변경을 추적할 수 있게 파일을 ‘등록’한다.git commit
: 파일 변경 사항을 기록해 둔다.git commit -m “message”
: message에 무엇을 바꾸었는지 간략하게 설명을 작성할 수 있다.위의 git init, git add와 git commit이 로컬 git 저장소에 변경사항을 기록하는 방법이라면, Github과 같은 온라인 서버에 원격 저장소를 만들기 위해서는 git remote
와 git push
를 이용할 수 있다.
git remote add origin [https://github.com/nickname/repository-name.git](https://github.com/nickname/repository-name.git)
: 로컬 저장소 위치를 원격저장소인 github repository와 연결시킨다.
git push {원격저장소} {branch}
: 명시한 원격저장소의 branch에 commit 내역을 “push”, 즉 저장한다. (git add
및 git commit
이후 실행)
git push -u origin master
:-u
옵션 : --set-upstream
과 같은 뜻으로, 앞서 명시해준 원격저장소(origin
)의 master
branch와 해당 로컬 저장소 사이에 연결관계를 형성함. git push
만으로도 연결관계를 형성한 원격저장소에 push 가능.
(waffle studio 23.5 OT)
branch 만들기 : git branch <branch-name>
branch로 이동 : git switch <branch-name>
branch의 코드를 main과 합침 : git merge <from-branch>
또한 협업 시, 여러 사람이 서로 다른 작업을 할 때 하나의 공동 작업공간 (organization repository)에서 각각 branch를 만들어 독립적인 작업 영역을 만들고 이후 작업이 완료되면 main으로 merge한다.
⇒ 공동 repository에서 개인 branch를 복사하는 것을 repository를 ‘fork’한다고 하며, 그리고 merge 이전에 공동작업자들에게 코드 변경 사항에 대한 확인을 보내는 것을 ‘Pull Request’ 즉 PR이라 한다.
fork
repository : 외부 서버에 있는 repository를 내 repository로 복사해오는 것이라 볼 수 있다.fork
해온 후 해당 repository를 로컬 저장소로 가져와준다. (clone
, pull
) (fork는 외부 repository에 대한 나만의 branch를 생성하는 거라 할 수 있다.) 이후 해당 로컬 저장소에서 파일을 수정한 후, commit 및 push한 후 원본 repository에서 pull request를 생성할 수 있다.```bash
cd file/location/
git clone https://github.com/nickname/repo-name.git
git pull
```
local repository
-- | commit, push | --> 내 git server
—- | pull request | --> 외부 git server
외부 git server
-- | fork | --> 내 git repository
--> | clone | --> 내 local repository
~/projects
❯ cd gift-card-maker
❯ git init
Initialized empty Git repository in /Users/seoyeonheo/projects/gift-card-maker/.git/
❯ git add images
❯ git add index.html
❯ git add main.js
❯ git commit -m "initial commit"
git remote add origin https://github.com/h-seo-n/card-maker.git
git branch -M main
git push -u origin main
README.md 업데이트 등 원격저장소(github)에 수정이 있었을 때, 원격저장소의 데이터를 git pull
로 로컬 저장소인 git에 최신화한 후 commit 해야 함.
→ 그렇지 않을 시 충돌 발생, pull 후 병합된 내용을 push하게 됨.
git add
로 스테이지에 추가git add .
git add main.js
git status
git commit -m "changes saved"
git push
reset
: 실수로 한 add
/commit
/push
취소하기add
한 경우 git reset <파일 경로 or 파일명>
으로 해당 파일을 stage에서 제거할 수 있다.git reset --soft HEAD^
git reset --mixed HEAD^ == git reset HEAD^
git reset HEAD~{개수}
git reset --hard HEAD^
git reset HEAD^
git reset {commit id}
→ reset 후 git commit -m "message"
입력 및 git push {repository} {branch} -f
로 강제 push를 해주면 원격저장소로 push된 커밋까지 취소할 수 있다.깃헙에 개의치 않게 테스트 코드 등의 파일을 잘못 올렸을때 git rm을 이용해서 github에서만 파일을 삭제할 수 있다. (로컬 저장소에는 유지)
git rm --cached filename.code
git commit -m "remove filename.code"
--cached
를 지우고 커맨드 실행 시 로컬 저장소에서도 삭제된다.
(깃헙 공식 웹에서는 웹 gui에서 삭제하는 방법이 안내되어 있으나 현재는 그 방법이 없어진 것으로 보임)