이 글은 협업을 통한 개발 시 많이 사용되는 깃허브(github) 명령어 기록 겸 사용법 간단히 정리한다. github는 2018년 6월 마이크로소프트에 8조원(75억 달러)으로 인수된 개발자 협업 및 형상관리(configuration management) 플랫폼이다. 톰, 크리스, 피제이 개발자 3명이 2007년부터 개발을 시작해 전세계에 서비스되었다(상세).
깃허브 형상관리 개념
형상관리는 소프트웨어나 문서의 변경사항을 체계적으로 추적 관리하는 것이다. 깃은 형상관리 플랫폼이다. 다음 그림은 새 소스파일을 생성해 깃(git) 저장소에 저장하고 협업하는 과정을 보여준다. git은 크게 4개 git 관리 파일 DB를 가진다. git은 각 DB들을 갱신하며 파일 형상을 관리한다.
깃 프로세스는 다음과 같다. 이 과정에서 파일이 추가, 변경, 삭제된 이력과 내용은 모두 깃허브에 기록된다. 이를 통해, 파일 내용을 특정 버전으로 되돌리거나(roll back), 다른 사람이 만든 파일과 병합(merge)하는 형상관리가 가능해진다. 앞의 그림은 이 과정을 잘 보여준다.
로컬 폴더 생성: 프로젝트 파일이 저장될 폴더를 생성한다.
깃 저장소 생성: 온라인 협업 작업을 위한 원격 작업할 깃 저장소를 생성한다.
로컬과 깃 저장소 연동: 원격 협업 작업을 위해 깃 저장소 연동 정보를 생성한다.
파일 생성 및 깃 저장소 추가(add): 파일 작업 후 해당 파일을 로컬 폴더 인덱스에 추가한다.
파일 커밋(commit)/푸시(push): 작업한 파일들을 커밋해 깃 저장소에 추가하고, 실제 파일 내용을 푸시하여 깃 저장소에 저장한다.
로컬 폴더 파일 갱신(PULL): 다른 사람들이 푸시한 깃 저장소 최신 버전 파일들을 로컬 폴더에 다운로드 받아 동기화한다.
깃은 형상관리를 위해, 로컬 폴더에 .git 이란 이름의 캐쉬 폴더를 관리한다. push하였을 때, 이 폴더에 있는 파일이 stage에 있는 파일로 취급되어, 리모트 서버에 업로드된다. 같은 이름의 파일이 서로 다르다면, 병합을 진행하는 데, 이 경우, 충돌이 발생된다면, 에러가 나므로, 사용에 주의해야 한다.
주요 사용 명령 예시
주로 다음과 같은 명령을 사용하게 된다.
git status
git add *.*
git commit -m 'update version'
git push origin main
git pull origin main
git은 소스코드를 push할때 리모트에 같은 소스의 수정본이 있다면, merge를 하려 시도하다가 충돌(conflict)이 발생할 수 있다(참고). 만약, 임시로 로컬에 생성되는 파일이나 폴더라면, 다음과 같이 .gitignore 파일을 만들어 merge를 피할 수 있다.
.gitignore
input/
output/
머지를 무조건 취소하려면 다음 명령을 입력한다.
git merge --abort
git reset --merge
git rm -r --cached .
이런 저런 시도를 해도 깃이 꼬일 경우, 작업한 파일만 백업해 놓은 후, git clone, git init로 초기화해서 다시 시작하는 것이 편하다.
git clone
git init
저장소 생성, 파일 형상관리 절차
깃허브 로긴 후 개발 프로젝트 폴더에 해당하는 저장소(repository)를 생성한다.
Updates were rejected because the remote contains work that you do not have locally: 저장소 생성 시 README를 체크하지 말거나, git pull 로 해결. 예) git pull origin master
Updates were rejected because the tip of your current branch is behind: git pull 할 때 --allow-unrelated-histories 옵션을 추가.
git 에러 화면 예시
깃 주요 명령어 요약
앞에서 사용한 깃 주요 명령어는 다음과 같다.
git init : git 생성
git clone git_URL : 깃 저장소에서 파일들 다운로드
git checkout branch_name : 브랜치 선택
git checkout -t remote_path/branch_name : 원격 브랜치 선택
git branch branch_name : 브랜치 생성
git branch -r : 원격 브랜치 목록보기
git branch -a : 로컬 브랜치 목록보기
git branch -m branch_name change_branch_name : 브랜치 이름 바꾸기
git branch -d branch_name : 브랜치 삭제
git push remote_name - delete branch_name : 원격 브랜치 삭제하기
git add file_path : 수정한 코드 선택
git commit -m “commit_description” : 선택한 코드 설명 입력 ( git commit -m “내용”)
git push romote_name branch_name : add 후 commit 코드 git server에 전송 (git push origin master)
git pull : git서버에서 파일 다운로드 후 merge
git fetch : git서버에서 최신 파일 다운로드
git reset --hard HEAD^ : commit한 이전 파일 취소
git reset --merge : merge 취소
git reset --hard HEAD && git pull : git 파일 강제 모두 다운로드
git config --global user.name “user_name ” : git 계정 Name 변경
git config --global user.email “user_email” : git 계정 Mail 변경
이 글은 세상을 바꾸는 코딩(넥서스 출판)이란 책을 소개하고, 어떻게 만들었는 지 공유합니다. 이 책은 코딩을 처음 접하는 사람들을 위해 만든 책이예요. 이 책은 코딩에 대한 개념을 삽화를 통해 쉽게 이야기하고. 사례, 역사 등 배경 토막지식을 챕터별로 공유하고 있어요. 관심만 있으면 비싼 곳에 가지 않아도 코딩을 배우고 사용할 수 있는 무료도구나 방법을 알려줍니다. 아울러, 메이커 활동을 통해 얻은 경험을 가감없이 담았습니다.
세바코 소개 영상^^
이 책은 평소 가족 메이커로써 활동한 경험을 살려 온 가족이 모여 만든 책입니다. 책도 메이커 활동이라 생각해, 책을 만드는 과정을 틈틈히 기록했었어요. 그 과정도 함께 공개합니다.
책의 구성
제목은 출판사에서 결정했어요. 제목 아이디어는 평소 메이커 활동을 통해 사물 인터넷 등 다양한 것을 만들어나가는 모습을 보고 영감을 받은 것 같아요. 사실 우리가 사용하는 많은 사물은 전기로 움직이는 것이 많죠. 이 안에는 코딩된 프로그램이 돌아가고 있거든요. 출판사에 여러개의 제목을 제안했었는 데, 이런 이유로 세바코란 제목이 결정된거예요.
표지가 예쁜 세바코 책
이 책은 지난번 키즈 메이커(전파과학사, 2016) 이후 코딩, 메이커 관련해 두번째 책입니다. 2014년 부터 꾸준히 메이커페어에 참여한 가족들과 함께 경험하고 고민했던 코딩, 무료 코딩 도구와 메이커 교육에 대한 생각을 가감없이 담았습니다.
코딩을 접해 본적이 없는 사람들도 쉽게 읽히고 이해되는 책을 만들기 위해 노력했어요.
책 머리말에는 이 책이 어떻게 나왔는 지 설명하고 있어요
이 책은 경기도 융합과학원 원장님, 과학관 유만선 박사님, 홍영길 서울대 행복연구센터 박사님, 우용만 영재발굴단 피디님이 추천사를 써 주셨어요^^
책 목차는 코딩이 세상을 바꾸는 사례, 컴퓨터적 사고, 알고리즘 등 기본 개념을 설명하고 있고, 실제 프로그램이 어떻게 만들어지는 지 사례가 포함되어 있어요. 아울러, 사물인터넷, 인공지능, 로봇, 블록체인, 가상현실, 스마트시티, 우주 등에 사용되는 코딩 사례를 설명하고 있지요.
책은 가족이 대화식으로 실생활의 문제와 코딩을 주제로 서로 이야기하는 식으로 구성되어 있어요. 이 내용은 실제 작품을 아이들이 만들면서 했던 대화를 담은 것들이 많답니다.
무료로 코딩 공부하는 방법
굳이 학원에 가지 않아도 코딩을 할 수 있도록 무료 코딩 도구를 담았어요. 실제 선우와 연수도 코딩 학원에 가지 않고 필요할 때 유튜브나 구글 찾아보면서 코딩을 하고 작품을 만들었어요. QR코드가 있어 쉽게 스마트폰으로 실행할 수 있습니다. 이렇게 가족이 코딩을 큰 돈 안들이고 할 수 있는 방법을 경험을 바탕으로 제공하고 있답니다.
책 내용 중간에 그림으로 내용을 재미있게 전달하기 위해 삽화를 넣었어요. 이 그림도 선우가 직접 메이크한 거예요.
코딩과 관련된 다양한 사례와 컴퓨터 역사를 토막 지식으로 요약해 담았어요. 그래서, 배경 지식을 알고 싶은 독자는 이 부분을 읽으면 되고, 빨리 읽고 싶은 사람들은 내용만 읽으면 되도록 했어요.
컴퓨터적 사고란
쉽게 컴퓨터적 사고를 배울 수 있는 방법을 경험을 반영해 소개하고 있으며, 코딩을 접할 때 막막한 문제인 '코딩 배울려면 처음에 무엇부터 해야지'란 질문에 대한 손쉽게 접근할 수 있는 웹사이트나 방법을 각 챕터별로 소개하고 있습니다.
컴퓨터적 사고
다양한 역사를 담고 있어
컴퓨터적 사고를 키우기 위한 다양한 방법을 담고 있는 데, 언플러그드 코딩 같은 내용도 소개하고 집에서 쉽게 할 수 있는 방법도 알려주고 있습니다.
아빠 로봇으로 코딩하기
코딩 로봇으로 피자 만들기
실제로 구글과 같은 개발회사에서 개발자가 하는 코딩은 더 명확하게 프로그램 요구사항을 정리하고 사용자 화면을 디자인해요. 이를 경험해 볼 수 있도록 피구 게임 만들기를 통해 게임 요구사항, 시나리오를 조사하고, 화면을 디자인한 후 코딩하는 과정을 담았어요.
코딩이 세상을 바꾸는 사례와 방법
이렇게 코딩의 ABC 기본기를 알려주고, 코딩으로 할 수 있는 예술, 로봇, 스마트시티, 블록체인 등 다양한 사례를 이야기합니다.
코딩으로 하는 미디어아트
사물인터넷과 오픈소스
가상현실과 무료도구
인터넷과 앱 만들기
블록체인
인공지능과 무료 도구
드론, 인간형 로봇, 무인자율차, 3D프린터에도 코딩이 있죠^^
스마트시티 안에도 코딩은 중요한 역할을 차지하고 있어요
우주를 탐구할 때도 코딩은 필수예요. 얼마전 블랙홀 사진을 세계 최초로 찍은 것도 코딩의 힘이 있었어요.
이런 다양한 사례와 더불어 우리 주변에 있는 문제를 발견하고, 해결하는 좋은 방법들을 알려주고 있어요. 메이커 운동, 유엔에서 발표한 SDG(Sustainable Development Goals) 등이 그것입니다.
메이커 운동
유엔 SDG
코딩과 관련된 경험, 사례, 지식, 도구 등 방대한 양을 하나의 책으로 축약해 넣기 위해, 온 가족이 대략 1년 이상 함께 정리했던 것 같습니다. 저희들이 경험한 코딩을 세바코에 그대로 담았어요. 잘 활용하시면 굳이 학원에 가지 않고도 무료로 코딩 교육이 가능하게끔 책을 만들었습니다. 단, 코딩에 대한 열정과 관심이 있어야겠죠.
코딩과 메이커에 관심있는 분들의 많은 사랑 부탁합니다~^^
참고 - 책 만들기 과정
책 만들기 과정은 대략 1년이 걸렸습니다. 책 만들기가 가족 이벤트였고, 추억도 남길겸 그 과정을 기록했지요. 이 책은 선우는 본인이 직접 경험한 사례를 책에 녹여 넣고, 그래픽 디자인 프로그램을 이용해 재미있는 삽화를 그렸고, 연수는 인터넷에서 사례들을 조사해서 정리해 넣는 방식으로 만들어졌어요. 엄마는 책 전체적인 흐름을 이해하기 쉽도록 내용 보완을 하고 꼼꼼히 수정을 했어요. 아빠인 저는 공학적인 지식을 좀 더 쉽게 전달하는 데 노력했습니다.
선우가 그려넣은 삽화
코딩과 관련해 경험한 메이커 작품도 녹여 넣었어요
코딩을 이해하는 데 도움을 주는 사례는 연수가 조사해 정리한거죠
엄마는 이 많은 원고를 직접 검수하고 잘못된 부분들을 수정했어요.
이렇게 책도 메이크 활동하는 식으로 만들었담니다
책을 만드는 동안은 주말이나 주중에 남는 시간을 각자 최대한 활용했어요. 코딩이 무엇인지 개념부터, 방법, 도구 및 사례까지 방대한 내용을 쉽게 담으려 노력했는 데, 내용을 쉽게 담기 위한 과정이 많은 시간을 차지하더군요.^^ 책에 대해서 궁금한 점이 있으면 언제든 출판사(넥서스)나 저자들에게 연락 주시길 바랍니다.