Git이란 개발자의 코드를 효율적으로 관리하기 위해 개발된 '분산형 버전 관리 시스템'이다. Git에서는 소스 코드가 변경된 이력을 쉽게 확인할 수 있고, 특정 시점에 저장된 버전과 비교하거나 특정 시점으로 되돌아갈 수도 있다. 통합하자면 소스 코드 기록을 관리하고 추적할 수 있는 버전 관리 시스템이라고 할 수 있다.
Github은 Git Repository를 관리할 수 있는 클라우드 기반 서비스로 Git으로 버전을 관리하는 폴더에 대해 Github를 통해 여러 사람들이 공유하고 접근 할 수 있는 것이다.
내가 작업하는 소스 코드 폴더가 버전 관리를 받게 하기 위해서는 내 폴더를 Git의 관리 아래에 두어야 하는데 이때 이 Git으로 관리되는 폴더를 Git Respository라고 한다.
Git repository 는 Remote Repository와 Local Repository 두 종류의 저장소를 제공한다. 작업할 때는 Local Repository에서 할 수 있고 내가 작업한 코드를 공유하려면 Remote Repository에 업로드해 여러 사람이 함께 공유할 수 있다. 또한 다른 사람이 Remote Repository에 올려놓은 소스 코드를 내 Local Repository 로 가지고 올 수도 있다.
다른 사람이 Remote Repository에 올려놓은 소스 코드를 내 Remote Repository 로 가지고 올 때의 과정을 Fork 라고 한다. 이렇게 Fork 를 통해 가져온 코드를 수정하기 위해서는 Local Repository로 가져오는 작업이 또 필요하다.
fork 를 통해 가져온 코드를 수정하기 위해서는 Local Repository로 가져오는 과정이 필요한데 이를 clone이라고 한다.
git clone 주소
명령어를 사용한다.내 컴퓨터로 가져온 코드를 수정하고 변경하는 작업을 완료했다면 이 내용을 저장해주어야 하는데 이 과정이 commit이다. 이를 통해 내 Local Repository에 저장할 수 있다.
git commit
명령어를 사용한다.git commit -m '메세지'
명령어를 통해 메세지를 남겨 변경 혹은 추가된 정보를 적을 수 있다.내 Local Repository에 수정된 작업본이 저장되었다면 이를 Remote Repository 로 올려주는 작업이 필요하다. 이 과정을 push 라고 하며 Local Repository에 기록해 놓은 commit을 Remote Repository로 업로드할 수 있다.
git push Remote repository명 브랜치명
명령어 를 사용한다.이렇게 Push를 완료하고 나면 GitHub에 있는 Pull request라는 기능을 사용해 내가 제안한 코드 변경사항에 대해 반영 여부를 요청할 수 있다.
Remote Repository에서 변경 사항이 있을 땐 Pull을 통해 Local Repository 로 가져올 수 있다.
git pull
명령어를 사용한다커밋을하며 계속 코드를 짜다보면 새로운 기능을 추가하는 경우가 생길 수 있다. 그럴 때는 원본파일에 코드를 추가하고 커밋하기보단 원본파일은 유지하면서 지금까지의 프로젝트의 복사본을 만들어 먼저 개발해보는 것이 더 좋은 방법이다.
이때 git에서 branch 기능을 이용하면 복사본을 쉽게 만들 수 있다. 또한 협업시에도 이 기능이 상당히 유용하다. 만약 여러 개발자가 동시에 똑같은 소스 코드를 수정하고 저장한다면 상당히 혼란스러운 경우가 일어날 것이다. branch기능을 통해 각자 원본 소스를 복사해 수정후 다시 합치는 방법을 사용한다면 훨씬 안정적으로 개발이 가능하다.
git branch 브랜치명
명령어를 사용한다.git switch 브랜치이름
명령어를 통해 해당 브랜치로 이동할 수 있다.브랜치에서 짰던 코드를 원본코드와 합치고 싶다면 원본코드가 있는 master혹은 main 브랜치에 합치면 된다. 이때 브랜치를 합치는 것을 merge라고 한다. merge가 하고싶다면
git switch main/master브랜치
main 혹은 master 브랜치로 다시 이동하고 git merge 브랜치명
을 입력하면 된다. 이때 만약 master/main 브랜치와 새로생성한 브랜치에서 같은 파일, 같은 줄을 수정했을 경우 merger confilct가 발생한다. 이 경우 에디터로 해당 파일을 열어보면 충돌사항이 적혀있다. 이때 둘중 어떤 코드를 적용할 지 골라 원하는 코드만 남기고 지운후
git add 파일명
를 터미널에 입력후git commit -m '메세지'
를 통해 새로운 커밋을 생성해주면 된다.Local Repository에서 클론이 아닌 새로운 작업을 git을 통해 버전관리하고 싶다면 해당 폴더에서
git init
명령어를 터미널에 작성하면 된다. git을 통해 관리되고 있는 폴더내의 파일의 버전을 생성해주고싶다면
git add 파일명.파일확장명
명령어를 터미널에 작성해 실행시키고 git commit -m '메세지'
명령어를 터미널에 작성해주면 된다.작업 폴더 내에서 git add
를 통해 기록을 남기고 싶은 파일을 고른후 git commit
을 통해 기록저장소에 옮기는 형식이다. 이때 작업 폴더에서 파일을 고르는 행위를 staging 한다고 하며 파일을 고르면 staging area에 들어가게 되며 git commit
시 repository로 옮겨진다.
git add 파일명1.파일확장명 파일명2.파일확장명
명령어를 사용해 여러 파일을 스테이징 할 수 있다.git add .
명령어를 사용해 모든 파일을 스테이징 할 수 있다.어떤 파일들을 스테이징 해놨는지, 수정했는지 등의 상태를 보여준다.
git status
명령어를 터미널에 작성하면 된다. 커밋한 로그들을 볼 수 있다.
git log
명령어를 터미널에 작성하면 된다.