git 기초
Git이란?
Git은 쉽게 말해 파일을 관리해주는 프로그램입니다. 여기에서 파일을 관리해준다는 것은 다음을 의미합니다.
- 파일의 변경 사항을 추적하며, 사용자가 각 파일의 버전을 관리할 수 있게 도와줍니다.
- 파일을 백업할 수 있게 해줍니다.
- 협업자들과 함께 파일을 공유하고, 각자의 작업물을 취합할 수 있게 해줍니다.
Git과 Github
Github은 Git이 설치되어져 있는 클라우드 저장소입니다.
로컬에서 Git이 관리하는 파일을 Github의 원격 저장소에 업로드하면,
업로드된 파일들에 대해 Git의 핵심 기능인 버전 관리 기능을 사용할 수 있으며,
온라인 저장소이므로 백업 및 다른 협업자들과 공유가 가능합니다.
Git은 로컬에서 버전을 관리해주는 프로그램이며, Github은 Git을 클라우드 방식으로 구현한 서비스입니다.
- add, commit, push : 온라인 원격 저장소에 업로드하는 과정.
- fork, clone : 협업자의 작업물을 나의 로컬에 다운로드 받는 과정.
- pull request : 상대 협업자에게 나의 작업 완성물을 취합해달라고 요청하는 과정.
- merge : 상대방의 작업물과 나의 작업물을 취합하는 과정.
Git의 기본 명령어
- git init Git이 파일생성, 코드작성을 추적하기 시작한다.
- git add 파일명, git add . 파일을 추가한다 add 뒤에 . 을 붙이면 모드 스테이징 한다.
- git status 지금 변경된 파일, 스테이징된 파일을 쭉 알려주는 상태창.
- git commit –m ‘메세지’ Commin 할 때 -m 뒤에 메시지 입력이 가능하다.
- git branch 작명 프로젝트 사본 하나 생성.
- git branch -M main 기본 브랜치 이름을 main으로 변경함.
- git swithch 브랜치이름 브랜치로 이동 / 다시 돌아가고 싶을땐 git switch main(master)을 입력하면 된다.
- git log –oneline –all –graph Branch 와 commit 내역을 한 눈에 그래프로 볼 수 있다.
- git merge 브랜치명 Main으로 이동한뒤 입력한 브랜치와 메인을 합친다.
- git restore 파일명 / git restore –source 커밋아이디 파일명 특정 commit 시점으로 파일 복구.
- git restore –staged 파일명 스태이징된 파일을 취소하고 싶을때 사용한다.
- git revert 커밋아이디(여려개 가능) Commit 취소
- git revert HEAD 최근 commit 취소
- git reset –hard 커밋아이디 특정 commit 시점으로 모든걸 되돌림 (협업시엔 위험해서 사용 안함)
- git reset –soft 커밋아이디 리셋인데 변동사항 지우지 말고 스테이징 해놓기
- git reset –mixed 커밋아이디 리셋인데 변동사항 지우지 말고 unstage 해놓기
- git push –u (저장 주소) (올릴 로컬 브랜치명) 로컬 -> 원격저장소 업로드. Git push 할 때 -u 추가하면 주소 기억하라는 뜻.
- git remote add 변수명, 주소 Git 변수 만들기 (첨 Push 할때 -u를 썻다면 담부턴 git push 만 써도 됨. )
- git clone 원격저장소 복제
- git pull 깃헙 파일을 가져오는것
- git stash 방금 수정했던 코드를 임시 공간으로 보관
- git stash list 보관된 코드 목록 조회
- git stash save ‘메모’ 메모도 적고 싶을때
- git stash pop 최근에 보관했던 stash 코드를 불러옴
- git stash drop 번호 Stash 1개 삭제
- git stash clear 전부삭제
혼자 작업 Workflow
Remote에 있는 다른 Repository에서 Fork를 해서 Remote에 있는 내 Repository에 가지고 옵니다.
그리고 이 코드를 수정하기 위해서는 내 컴퓨터로 가져오는 작업이 또 필요합니다. 내 컴퓨터에서 작업을 하기 위해서 clone을 합니다.
이제 내 컴퓨터의 작업 공간 (work space) 에서 작업에 들어간 파일들을 git의 관리하에 있는 상태로 올려줄 수 있습니다.
이 영역을 staging area라고 말합니다.
즉, staging area에 들어오지 않은 파일은 unstaged 혹은 untracked file이라고 말하며,
staging area에 있는 파일들은 staged 된 파일이라고 말할 수 있어요.
staging area에 들어온 파일들은 commit이 가능합니다.
commit을 하고 나면 내 remote repository에 push 해서 commit 기록을 remote 에도 남겨줄 수 있습니다.
push를 완료한 후 이제 remote의 원래 레파지토리에 pull request를 보내면
Remote Repository로 내가 수정한 코드를 업로드할 수 있습니다.
함께 작업 Workflow
git init을 입력하여 git repository로 변환하거나, 새로운 repository를 생성합니다.
원격으로 관리하기 위해서는 Local Repository를 Remote Repository와 연결하는 작업이 필요합니다
이때 git remote add 명령어를 사용할 수 있습니다.
내 Github에 weatherapp Repository를 하나 만들고
그 Repository 주소를 git remote add origin 명령어 뒤에 입력함으로써
해당 Remote Repository와의 연결이 완료되었습니다.
remote add를 활용해서 다른 사람의 Repository 와 연결할 수 있습니다.
상대방의 Repository 주소를 입력해 줍니다.
git remote add (상대방 repository 이름) (상대방 repository 주소)
git remote -v 명령어를 통해 현재의 Local Repository와 연결된 모든 Remote Repository 목록을 확인할 수 있습니다.
git pull (shortname)(branch)를 입력해 remote repository에 있는 내용을 받아옵니다.
받아오는 내용은 자동으로 merge됩니다.
충돌 해결하기
git status 명령어를 통해 어떤 파일이 충돌하고 있는지 확인이 가능합니다.
IDE에 따라 위의 화면과 다를 수 있습니다.
- Accept Current Change를 클릭해서 내가 수정한 내용으로 파일에 반영할 수 있습니다.
- Accept Incoming Change를 클릭해서 Remote Repository의 내용으로 파일에 반영할 수도 있습니다.
- Accept Both Changes는 변경 사항 모두를 반영합니다.
- 위 4가지 옵션 이외에도 직접 파일을 수정해서 반영하는 방법도 있습니다.
수정을 마치면 병합 커밋(merge commit)을 생성해 주기 위해서 파일을 staging area로 추가해야 합니다.
댓글남기기