오늘은 git 에 대해 알아보고 설치방법부터 간단한 응용까지 살펴볼 예정입니다. 또한 github 에 연동하는 방법도 같이 살펴보도록 하겠습니다.
git과 github 의 차이
git을 정의하면 "프로그램 소스 관리 프로그램" 입니다. 로컬에 git 과 연동을 하면서 원격지에서 git처럼 프로그램들을 관리하는 시스템, 사이트가 바로 github 입니다. github, gitlab 등 그 종류는 다양하며 요즘 대부분의 개발자들은 2020년 4월 유료로 제공하던 옵션을 무료들로 많이 풀면서 많이 사용하고 있습니다.
git 설치 (window)
git을 설치하기 위해서는 git 다운로드 사이트로 이용하여 git을 다운받습니다. 환경은 window 환경에서 설치를 진행할꺼라 window 환경의 다운로드 파일을 다운로드 받으시면 됩니다.
다음 화면으로는 window 의 경우 32bit와 64bit 둘 중에 골라서 받게 되는데 대부분의 컴퓨터가 요즘 64bit 라서 64bit을 다운로드 해주시기 바랍니다. 그리고 portable 형태의 설치도 있는 저는 standalone 으로 설치를 진행하겠습니다.
다운로드가 완료되면 실행파일을 실행시켜서 바로 설치를 진행합니다. 특별한 옵션 없이 기본값으로 git 을 설치합니다.
git 용어와 설정
다음으로는 gitbash를 통해 git의 기본을 알아보겠습니다. 아래와 같이 일단 아래의 그림과 같이 window 찾기를 통해 git bash 을 찾아 실행해 주시기 바랍니다. git bash 는 git 명령어들을 사용할 수 있는 일종의 커멘드 창이라고 생각하시면 됩니다. 기본적으로 리눅스의 터미널 창과 같다고 생각하시면 됩니다. 사실 리눅스라는 용어도 처음 들어보시는 분들이 있을 듯 합니다. git bash 는 어려운 명령어들을 사용하여 git을 관리하기에 효율적이지만 처음 git을 접근하시는 분들에게는 다소 어려울 수 있습니다. 하지만 머리아픈 명령어가 아닌 사용자 인터페이스를 통해 git 을 관리하게끔하는 툴들이 많이 있으니 걱정하지 않으셔도 됩니다. 추후에 GUI 툴을 같이 한번 써보는 시간을 가지도록 하겠습니다.
git bash 를 실행했을때의 모습은 아래와 같습니다.
우리는 먼저 git에서 사용할 초기화 과정을 거치게 되는데 이를 위해서 작업 공간인 workspace 를 하나 만들도록 하겠습니다. 아래의 명령어처럼 mkdir 을 사용하여 디렉토리를 만들고 pwd 명령어를 활용하여 내 위치가 어디인지 확인을 합니다.
이후 초기화 과정을 위해 초기화 명령어인 git init 을 통해 git 초기화를 수행합니다. 내부적으로는 .git 이라는 디렉토리가 생성이 됩니다. 만약 아래와 같이 사용자 정보인 이메일과 이름이 등록이 안되어있다면 아래의 가이드로 등록을 해주시기 바랍니다.
실제 git을 init 하고 .git 이라는 디렉토리가 생성되는지 아래와 같이 확인해 보실 수 있습니다.
다음으로는 git 에서는 3가지 용어를 가장 많이 사용하는데요 스테이징(add), 커밋(commit), 푸시(push) 입니다. 이 개념들은 정확히 아셔야 하며 익숙해 지셔야 합니다. 일단 이 개념들이 나오게된 배경은 과정별로 나누어둬서 혹시 모를 실수를 방어하기 위한 개념들 입니다.
아래의 그림과 같이 touch 명령어를 사용하여 파일을 하나 만들고 ls 명령어를 사용하여 실제 그 파일이 생성되었음을 확인하고 add와 commit 명령어를 통해 푸시하기전 상태를 만들 수 있습니다.
git 에 반영하기 위해서는 사전단계인 스테이징 단계를 거치며, 스테이징은 git add 명령어를 통해 실행하는데 스테이징을 한 대상만 커밋(commit) 명령어를 통해 git에 반영할 수 있습니다. 또한 로컬 디스크에 커밋한 소스는 원격지에 푸시(push) 명령어를 통해 반영할 수 있습니다.
$ git push -u origin main
위 명령어를 통해 변경된 파일이 반영되는 것을 확인할 수 있을 것입니다.
# 위 과정은 스테이징, 커밋, 푸시에 대한 일반적인 설명을 위해 나열한 것이며 실제로는 아래와 "git과 github 의 연동"을 참고해 주시기 바랍니다.
git 과 github 의 연동
git과 github 를 연동하기 위해서는 먼저 github 에 가입이 되어 있어야 합니다. 물론 로컬에서 자체적으로 프로그램 관리를 하셔도 되는 분들은 github 와의 연동을 안하셔도 되는데 보통 remote 서버와 연결하여 백업과 협업 그리고 공유 차원에서 github 를 많이 사용하고 있습니다.
최초 github 계정에 로그인을 하면 레포지토리가 없기 때문에 "Create repository"를 눌러 레포지토리를 생성(newrepository, 이름은 아무거나...)합니다. git repository 는 git 을 관리하는 프로젝트 단위 저장소 입니다. 즉 로컬 레포지토리라고 하는 것은 본인의 컴퓨터에 저장된 로컬 버젼의 프로젝트 저장소이며, 리모트 레포지토리라고 하는것은 로컬이 아닌 외부 서버의 프로젝트 저장소 입니다. 팀 단위 작업을 할 때 유용하며, 이 곳에 코드를 공유하여 다른 사람이 코드를 확인할 수 있습니다. 또한 로컬 버젼의 프로젝트 병합과 변경등을 적용할 수 있습니다.
저는 readme 문서라고 선택을 하였는데 안하셔도 readme 문서가 무엇인지도 아직은 모르셔도 됩니다. "Create repository" 버튼을 클릭하면 아래와 같이 없던 moonbird-thinker/newrepository 라는 것이 생긴것을 볼 수 있습
자 이제 remote github 에 있는 내용을 로컬에 다운로드 받아보겠습니다.
잠깐 테스트로 이전(git 용어와 설정)에 만들어 두었던 git initial 부분을 지우기 위해 rm -rf 명령어를 통해 삭제를 진행합니다.
이제 새로만든 repository 를 로컬에 다운로드해 보겠습니다. "Code' 부분을 누르게 되면 아래와 같이 HTTPS 라는 부분의 탭이 보이게 되고 그 부분에 있는 라인을 복사해둡니다.
그런 다음에 아래와 같이 git clone 이라는 명령어를 통해 로컬에 다운을 받으실 수 있습니다. 다운 받은 newrepository 에는 이미 초기화 되어 있는 .git 파일이라던지 README 문서등이 있습니다.
잠깐여기서 git log 명령어를 통해 commit 의 상태를 살펴볼 수 있습니다. 우리는 git을 다루며 git status 와 git log 라는 명령어를 통해 git 이 스테이징 상태인지 또는 커밋 상태인지 등을 파악할 수 있습니다.
자 그럼 파일을 하나 만들고 remote 에 업로드를 시켜보도록 하겠습니다. 스테이징, 커밋, 푸시 순서를 잘 지켜서 로컬에서 일단 push 전 상태를 아래와 같이 만들어 둡니다. 중간중간 git status 를 통해 상태 변화를 알아내게 됩니다.
그리고 git remote -v 명령어를 통해 remote 지정이 잘 되어있는지 확인하고 git push 명령어를 통해 업로드를 진행합니다. 그리고 git log 를 선택하면 작업된 history를 살펴볼수 있습니다.
* git push 시 로그인 인증 창이 뜨는 경우 유저네임과 비미번호를 입력하여 push 를 진행함
그럼 github remote 에도 잘 올라갔는지 확인해 보도록 하겠습니다. 아래와 같이 두개의 log 들이 보이며 첫번째 "Initial commit"은 초반에 repository 를 github 을 통해 만들떄 생성이 된 것이며 그 위에 "Added test.py file"은 git push 명령어를 통해 올라간 것입니다.
다양한 플랫폼에서 자동화를 하고싶으신 분들은 아래의 오픈방(무료코드 및 무료강의 제공)을 통해 이야기 나누고 있습니다. 관심있으신 분들은 함께해요!!! (코드 0123을 입력하고 들어오세요!!!)
https://open.kakao.com/o/gXPgJC9d
다루는 주제들 : 티스토리, 네이버블로그, 워드프레스, 유튜브, 인스타, 트위터, 페북, 숏폼, 메타플랫폼, 카카오뷰, 쿠팡파트너스, 뉴스픽, 애드픽, 오아시스 등 다양한 주제로 자동화에 대해 같이 이야기 하고 있습니다.
'IT > IT Tip' 카테고리의 다른 글
github pages 블로그 만들기 - ruby와 jekyll 설치 (0) | 2023.08.13 |
---|---|
Github pages 블로그 선택한 이유와 jekyll 테마 (window) (0) | 2023.08.13 |
깃허브(GitHub) 회원 가입 (계정 생성) (0) | 2023.08.12 |
Android adb 명령어 모음 (0) | 2023.01.24 |
WEBP GIF 변환 및 용량 줄이기 - ezgif, 샤나 인코더 (0) | 2022.05.17 |