git helloworld (mac to rasp4)

Dave Lee·2021년 7월 25일
0

everyHelloWorld

목록 보기
4/5

이 글에서는 앞으로 다른 프로젝트를 실행하는데 꼭 알아야 할 git 사용법에 대해 가장 간단한 수준에서 알아보고자 한다.

git이란?

Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.

git은 "분산형 버전 관리 시스템"이다. 프로젝트를 진행하다보면 다음과 같은 일들이 일어나는데 git은 이를 편리하게 해결할 수 있게 해 준다.

  • 본인 혼자 일할 때 소스의 변경 이력을 체계적으로 관리할 수 있다.
  • 어떤 문제가 생겼을 때 이전 버전의 소스로 되돌릴 수 있다.
  • 여러 사람이 한 프로젝트의 소스를 다룰 수 있다.
  • 최종본 소스는 그대로 둔 채, 새로운 기능을 개발하는데 관련된 소스를 다루고 싶다.
  • 이미 새로운 기능을 개발 중인데, 이전 기능에 대한 급한 문제해결을 해결해야 한다.

위와 같은 문제들은 git과 더불어, gitflow(git을 활용하기 위한 전략)를 별도로 공부해보면 잘 나온다.

오늘은 이정도까지는 아니고 아주 기초적인 git 사용법을 알아보겠다.

github

GitHub, Inc. is a provider of Internet hosting for software development and version control using Git. It offers the distributed version control and source code management functionality of Git, plus its own features.

git은 버전 관리 툴이니, 당연히 소스를 저장할 저장소가 필요하다. 로컬 컴퓨터나 서버에서는 그 자체가 저장소 역할을 하지만, 이와는 별도로 여러 사람들의 소스가 모이고, 서버에서 바라보고 복사해 갈 수 있는 원격 저장소가 필요하다. 원격 저장소의 대표적인 예로 github, bitbucket 등이 있다.

가장 유명한 github에 대해 알아보자.

가입하기

github.com 에 가서 회원가입을 해 보자.
이메일, 비번(잘 안되면 눈모양을 켜서 혹시 한글 입력중인지 확인)을 입력한 후, username을 입력하자. username은 https://github.com/여기/ 이렇게 url에 들어가게 되니 마음에 드는 것으로... 나중에 바꿀 수는 있지만 한번 퍼지고 난 url은 작동하지 않는다고 경고가 뜬다.

뭔가 이상한 퀴즈로 사람인걸 증명하고, 이메일로 도착한 6자리 코드를 입력하면 가입 완료! 아래와 같은 화면을 만날 수 있다.

테스트용 repository(저장소) 생성하기

지금까지 만든게 계정이라면, 이제는 각 소스의 묶음이라고 할 수 있는 저장소, repository를 생성할 차례이다.

화면에서 바로 create repository 버튼을 눌러 저장소를 만들자. 혹은 우상단 프로필 옆에 있는 + 에도 해당 기능이 있다.

이름에는 'gittester', public/private에서는 private을 선택하자. 그리고 Create repository 버튼을 누르면 끝난다.

작업용 token 발급

2021년 8월 13일부터 github에 원격으로 접속해서 뭔가 작업을 할 때 기존의 password(회원가입 때 입력한것) 방식의 인증은 더 이상 통하지 않는다. password 대신 토큰을 사용하면,

  • 길이가 길어 훨씬 더 안전하고
  • 구체적인 기능에 대해 권한을 허가할 수 있고
  • 문제 발생/의심될 때 언제든지 revoke(무효화) 할 수 있다.

우상단 profile -> settings -> Developer settings 에서 Personal access token을 발급받자. 이 화면에서 Generate new token을 누르면 시작된다.


이 화면에서는 적당한 이름을 입력하고 repo 항목에 대표체크를 한 후 하단에 Generate token 버튼을 누르자.

그러면 발급받은 토큰이 화면에 표기가 된다.

중요! 여기서 반드시 이 토큰을 복사해서 별도로 가지고 있어야 한다. 이 메뉴에 다시 진입하더라도 토큰을 발급받은 이력만 확인할 수 있을 뿐 토큰 자체를 확인할 수 있는 기회는 여기가 마지막이다.

로컬 환경에서 git repository 생성하기

원래 각 ide에서는 프로젝트를 생성할 때 이 폴더를 git repository로 사용할 것인지 물어보고 이렇게 생성해 주는 경우가 많다. 그렇지만 우리는 공부도 할 겸 직접 작업해보자. (필자의 환경은 mac인 점을 참고)

repository 생성

우선 아무 테스트 디렉토리를 만들었다.

cd projects
mkdir etc
cd etc
mkdir gittester
cd gittester
touch a.txt (이 파일을 생성만 한다.)

이제 이 폴더는 이름이 gittester이고 파일이 a.txt 하나 존재하는 폴더이다. 이 폴더를 git repository로 선언하고 상태를 확인해보자.

git init
Initialized empty Git repository in /Users/davelee/Documents/projects/etc/gittester/.git/
git status
On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
	a.txt

nothing added to commit but untracked files present (use "git add" to track)

git init으로 현 폴더를 repository로 선언할 수 있다.
git status로는 현재 repository의 상태를 요약해 볼 수 있다. 위의 메시지를 해석해보면,

현재 master branch에서 작업중
아직 commit한 적 없음
추적하지 않고 있는 파일 a.txt 있다.

이정도의 메시지이다.

방금 나온 branch는 다음에 설명하기로 하고 우선 master는 가장 중심이 되는 작업본이라고 간단히 이해해두자.(요즘에 github은 main이란 용어를 밀고 있음)

첫 commit

commit은 변경사항을 기록하는 행위이다. 우리가 ide에서 수시로 저장할 때마다 commit할 필요는 없기 때문에, 자신이 적당히 작업한 분량이 생겼을 때 commit을 하면서 추가/수정/삭제된 파일을 repository에 반영하면 된다.

우선 관리되지 않고 있는 a.txt 파일을 git에 추가해보자.

git add a.txt
git status
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
	new file:   a.txt

그리고 우리의 첫 commit을 해보자! -m으로 커밋 메시지를 적을 수 있다. (commit message를 잘 적는 전략 : https://chris.beams.io/posts/git-commit/)

git commit -m "my first commit"
git status
On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean

commit을 하고 나면 이제 우리의 최신 소스와 repository의 상태가 같기 때문에 status에 더 이상 잔소리가 나오지 않는다.

로컬 환경에서 소스를 원격 repository에 보내기

지금까지 commit한 모든 것들은 원격 repository와 아무런 상관이 없다. 우리 폴더의 숨은 하위폴더 .git 에 이런 저런 정보가 저장될 뿐이다. 이를 github에 만들어둔 원격 repository에 보내보자. 이를 push라고 한다.

우선 원격 저장소를 지정해주자. 원격저장소의 주소는 github에서 code를 열어 확인할 수 있다.

https:// 하고 나서 github.com 앞에 자신의 username@ 를 넣어주자.

git remote add origin https://helloworld-dave@github.com/helloworld-dave/gittester.git

이제 push하자.

git push -u origin main  
Password for 'https://helloworld-dave@github.com': 
여기서 받아두었던 토큰 입력

그리고 github.com에 접속해보면 a.txt가 commit message와 함게 올라와 있는 것을 확인할 수 있다.

서버에서 repository의 소스 내려받기

raspberrypi4 ubuntu에 git 설치

ubuntu를 처음 설치하면 git이 별도로 없기 때문에 설치해준다.

sudo apt install git

원격 repository에서 내려받기

여기서도 테스트용이므로 적당한 곳에서 실험해보자. git에서 내려받으면 최상위 폴더가 생기므로 폴더가 생겼으면 하는 상위 폴더에서 진행한다. clone이란 어떤 저장소를 그대로 복사해 오는 것을 뜻한다.

여기서도 token이 필요하니 미리 준비해두자.

helloworld@raspberrypi4:~/Documents/projects$ mkdir etc
helloworld@raspberrypi4:~/Documents/projects$ cd etc
helloworld@raspberrypi4:~/Documents/projects/etc$ git clone https://helloworld-dave@github.com/helloworld-dave/gittester
Cloning into 'gittester'...
Password for 'https://helloworld-dave@github.com': 
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 5 (delta 0), reused 5 (delta 0), pack-reused 0
Receiving objects: 100% (5/5), done.
helloworld@raspberrypi4:~/Documents/projects/etc$ ls
gittester
helloworld@raspberrypi4:~/Documents/projects/etc$ cd gittester/
helloworld@raspberrypi4:~/Documents/projects/etc/gittester$ ls
a.txt
helloworld@raspberrypi4:~/Documents/projects/etc/gittester$ 

위와 같이 gittester라는 폴더와, 그 안에 a.txt라는 파일을 확인해 볼 수 있다.

마무리

git의 사용은 실제로는 이것보다 좀 더 복잡하다. 간단하게는 add -a 나 pull정도는 더 공부해야 하고, branch관리, commit message 작성, merge, rebase 등 공부할 것이 좀 있다. 약간이라도 규모있는 회사라면 협업을 위해 회사에서는 입사때 필수적으로 물어볼 것이고, 오히려 이 체계가 없는 회사라면 입사를 심각하게 고려해 보는 것이 좋을 정도이다.

앞으로 로컬에서 개발/ 원격 서버에서 구동시 이정도의 지식은 숙지해 두는 것이 좋겠다.

profile
developer

0개의 댓글