GitHub 깃헙 사용법! 차근차근 첫 커밋 해보기 (git add,commit,push)
우선, 깃헙을 쓰려면 몇가지 간단한 리눅스 명령어를 알아야 한다.
🐾 리눅스 명령어
# pwd : 본인의 현재 위치 확인
# cd : change directory : 일루 들어갑니다~ 라는 의미
# mkdir : make directory : 폴더 생성
# ls : 이 명령어는 다음과 같은 옵션과 함께 사용할 수 있다.
-a (all) : 숨김 파일을 포함한 모든 목록 출력
-l : 각 목록의 세부 정보까지 함께 출력
-d : 특정 파일이나 디렉토리를 지정해서 정보를 확인 (ls -ld의 형태로도 사용 가능)
-n : 파일 및 디렉토리 정보 출력시 UID, GID 형태로 출력 (ls -ln의 형태로도 사용 가능)
-F : 파일 및 디렉토리(즉, 목록)의 형식을 표시
-R : 디렉토리의 하위 정보까지 모두 확인
# Git Bash에서 복붙하는 방법 : Insert 키.
깃배시에서는 컨트롤c,v가 안먹힘.
1. 기본 용어
반복적으로 사용하려고 하는 몇 개의 용어들
- 커맨트 라인(Command Line):
깃 명령어를 입력할 때 사용하는 컴퓨터 프로그램. 맥에선 터미널이라고 한다. PC에선 기본적인 프로그램이 아니어서 처음엔 깃을 다운로드해야 한다(다음 섹션에서 다룰 것이다). 두 경우 모두 마우스를 사용하는 것이 아닌 프롬프트로 알려진 텍스트 기반 명령어를 입력한다.
- 저장소(Repository):
프로젝트가 거주(live)할 수 있는 디렉토리나 저장 공간. 깃허브 사용자는 종종 “repo”로 줄여서 사용한다. 당신의 컴퓨터 안의 로컬 폴더가 될 수도 있고, 깃허브나 다른 온라인 호스트의 저장 공간이 될 수도 있다. 저장소 안에 코드 화일, 텍스트 화일, 이미지 화일을 저장하고, 이름붙일 수 있다.
- 버전관리(Version Control):
기본적으로, 깃이 서비스되도록 고안된 목적. MS 워드 작업할 때, 저장하면 이전 화일 위에 겹쳐쓰거나 여러 버전으로 나누어 저장한다. 깃을 사용하면 그럴 필요가 없다. 프로젝트 히스토리의 모든 시점의 “스냅샷”을 유지하므로, 결코 잃어버리거나 겹쳐쓰지 않을 수 있다.
- 커밋(Commit):
깃에게 파워를 주는 명령이다. 커밋하면, 그 시점의 당신의 저장소의 “스냅샷”을 찍어, 프로젝트를 이전의 어떠한 상태로든 재평가하거나 복원할 수 있는 체크포인트를 가질 수 있다.
- 브랜치(Branch):
여러 명이 하나의 프로젝트에서 깃 없이 작업하는 것이 얼마나 혼란스러울 것인가? 일반적으로, 작업자들은 메인 프로젝트의 브랜치를 따와서(branch off), 자신이 변경하고 싶은 자신만의 버전을 만든다. 작업을 끝낸 후, 프로젝트의 메인 디렉토리인 “master”에 브랜치를 다시 “Merge”한다.
2. 주요 명령어
깃은 리눅스와 같은 큰 프로젝트를 염두에 두고 디자인되었기 때문에, 깃 명령어는 아주 많다.
그러나 깃의 기본을 사용할 때에는 몇 개의 명령어만 알면된다. 모두 “git”이란 단어로 시작된다.
- git init:
깃 저장소를 초기화한다. 저장소나 디렉토리 안에서 이 명령을 실행하기 전까지는 그냥 일반 폴더이다. 이것을 입력한 후에야 추가적인 깃 명령어들을 줄 수 있다.
- git config: “configure”의 준말, 처음에 깃을 설정할 때 가장 유용하다.
- git help: 명령어를 잊어버렸다? 커맨드 라인에 이걸 타이핑하면 21개의 가장 많이 사용하는 깃 명령어들이 나타난다. 좀 더 자세하게 “git help init”이나 다른 용어를 타이핑하여 특정 깃 명령어를 사용하고 설정하는 법을 이해할 수도 있다.
- git status: 저장소 상태를 체크. 어떤 화일이 저장소 안에 있는지, 커밋이 필요한 변경사항이 있는지, 현재 저장소의 어떤 브랜치에서 작업하고 있는지 등을 볼 수 있다.
- git add: 이 명령이 저장소에 새 화일들을 추가하진 않는다. 대신, 깃이 새 화일들을 지켜보게 한다. 화일을 추가하면, 깃의 저장소 “스냅샷”에 포함된다.
- git commit: 깃의 가장 중요한 명령어. 어떤 변경사항이라도 만든 후, 저장소의 “스냅샷”을 찍기 위해 이것을 입력한다. 보통 “git commit -m “Message hear.” 형식으로 사용한다. -m은 명령어의 그 다음 부분을 메시지로 읽어야 한다는 것을 말한다.
- git branch: 여러 협업자와 작업하고 자신만의 변경을 원한다? 이 명령어는 새로운 브랜치를 만들고, 자신만의 변경사항과 화일 추가 등의 커밋 타임라인을 만든다. 당신의 제목이 명령어 다음에 온다. 새 브랜치를 “cats”로 부르고 싶으면, git branch cats를 타이핑한다.
- git checkout: 글자 그대로, 현재 위치하고 있지 않은 저장소를 “체크아웃”할 수 있다. 이것은 체크하길 원하는 저장소로 옮겨가게 해주는 탐색 명령이다. master 브랜치를 들여다 보고 싶으면, git checkout master를 사용할 수 있고, git checkout cats로 또 다른 브랜치를 들여다 볼 수 있다.
- git merge: 브랜치에서 작업을 끝내고, 모든 협업자가 볼 수 있는 master 브랜치로 병합할 수 있다. git merge cats는 “cats” 브랜치에서 만든 모든 변경사항을 master로 추가한다.
- git push: 로컬 컴퓨터에서 작업하고 당신의 커밋을 깃허브에서 온라인으로도 볼 수 있기를 원한다면, 이 명령어로 깃허브에 변경사항을 “push”한다.
- git pull: 로컬 컴퓨터에서 작업할 때, 작업하고 있는 저장소의 최신 버전을 원하면, 이 명령어로 깃허브로부터 변경사항을 다운로드한다(“pull”).
3. 처음으로 깃/깃허브 설정하기
먼저, GitHub.com에 가입한다.
다른 소셜 네트워크에 가입하는 것 처럼 간단하다!
로컬 컴퓨터에서 작업하려면 깃을 설치해야 한다. 필요에 따라 윈도우, 맥, 리눅스 용 깃을 설치하라.
이제 커맨드 라인으로 넘어갈 시점이다. 윈도우에선 방금 설치한 Git Bash 앱으로, OS X에선 터미널로 시작한다.
깃에 자신을 소개할 차례이다. 다음 코드를 타이핑한다.
git config --global user.name "Your Name Here" |
물론, “Your Name Here”의 인용부호 안에 자신의 이름을 넣어야 한다.
다음엔, 당신의 이메일을 말해준다. 조금 전에 GitHub.com을 가입할 때 사용한 이메일이어야 한다.
git config --global user.email "your_email@youremail.com" |
이것이 로컬 컴퓨터에서 깃을 사용할 때 필요한 모든 것이다. 원한다면, 깃과 소통할 때마다 GitHub.com 계정에 로드인하는 것을 요청하지 않도록 깃을 설정할 수 있다. 이것과 관련된 풀 튜토리얼은 깃허브에 있다.
4. 온라인 저장소 만들기
이제 프로젝트가 거주할 장소를 만들 시점이다.
깃과 깃허브는 당신의 프로젝트와 그 화일들, 깃이 저장한 화일들의 모든 버전에 접근할 수 있는 디지털 디렉토리나 저장공간을 저장소(repository 줄여서 repo)라고 한다.
GitHub.com으로 돌아가서 Repositories 클릭.
그리고 New 를 눌러, 저장소에 짧고 기억할만한 이름을 입력한다.
간단한 설명을 쓰고, Public, “Initialize this repository with a README.” 앞의 체크박스는 신경쓰지 않아도 된다.
(필수)Repository name : 저장소의 이름, 사용자가 원하는 이름 입력
(선택)Description : 선택 입력으로 저장소에 대한 설명(주석)
(필수)Public, Private : 무료 계정인 경우 Public만 사용 가능하며 개인적인 저장소를 원한다면 결제를 해서 Private 사용이 가능하다.
(선택)Initialize this repository with a README : 저장소 생성과 함께 README 파일이 설치된다.(README 파일은 코드의 정보가 담겨있다)
(선택)Add .gitignore : 깃 허브로 올리지 않을 파일 선택
(선택)Add a license : 저장소 생성과 함께 라이센스 파일의 설치가 자동 수행된다.
Readme 파일은 보통 프로젝트에 관해 설명하는 텍스트 파일이다.
여기선 연습삼아 로컬에서 자신의 Readme 파일을 만들 것이다.
녹색의 “Create Repository” 버튼을 클릭한다. 이제 프로젝트가 거주할 온라인 공간을 가졌다.
그럼 이런 페이지가 나온다.
저기 적혀있는 주소가 내 저장소의 주소니까 복사 해 둔다.
5. 로컬 저장소 만들기
온라인에서 거주하는 프로젝트의 공간을 방금 만들었다. 그러나, 그 곳이 작업할 공간은 아니다.
* 깃 주소 : 원격 저장소 ,
폴더 : 로컬 저장소
실제 작업은 컴퓨터에서 작업할 것이므로, 로컬 디렉토리에 만들 저장소에 실제로 미러링해야 한다.
폴더를 하나 만들어 준다. 먼저 다음을 타이핑한다:
mkdir ~/ lotto |
mkdir은 make directory의 준말이다.
깃 명령어는 아니고 비주얼 인터페이스 이전 시대에 일반적인 탐색 명령어이다.
~/는 나중에 찾기쉽게 컴퓨터 화일 구조의 최상위 단계에 저장소를 만드는 것이다.
브라우저에서 ~/를 입력하면 로컬 컴퓨터의 최상위 단계 디렉토리가 보일 것이다.
(맥의 크롬인 경우 Users 폴더를 보여준다.)
깃허브 저장소와 동일하게 lotto 로 이름짓는 것을 주목한다.
그리고 또 다음을 입력한다.
cd ~/ lotto |
방금 디렉토리를 만들었고, 그 디렉토리로 옮겨 들어갔다.
git init |
init은 “initialize(초기화)”를 뜻한다.
이 코드를 입력하면 이 디렉토리를 로컬 깃 저장소라고 컴퓨터에게 말해주는 것이다.
폴더를 열면 -이 새로운 깃 디렉토리는 전용 저장소 안에 숨겨진 파일 하나이기 때문에- 어떤 차이를 보지 못할 것이다.
Initialized empty Git repository in [경로] 이렇게 한 줄이 나오고,
프로젝트 폴더 안에 .git이라는 숨겨진 폴더가 생성되었다.
만약 폴더가 안 보인다면, 보기에서 숨겨진 파일 보기를 체크한다. (명령창에 ls 치면 나오긴 한다.)
컴퓨터는 이제 이 디렉토리를 Git-ready로 인식하고, 깃 명령어를 입력할 수 있다!
이제 프로젝트가 거주할 온라인과 로컬 저장소를 모두 가진 것이다.
이제는 깃허브에 첫번째 커밋을 만들어서 프로젝트의 첫 부분을 추가하자.
6. git status
다음을 입력한다.
git status |
그러면 커맨드 라인에서 다음과 유사한 몇 개의 텍스트 줄을 응답할 것이다.
# On branch master # Untracked files: # (use "git add ..." to include in what will be committed) # # Readme.txt |
해석 :
먼저, 당신은 프로젝트의 master 브랜치 상에 있다.
“branched off”하지 않았기 때문에 당연하다.
두번째론, Readme.txt이 “untracked” 화일로 리스트되었다. 현재는 깃이 무시한다는 것을 뜻한다..
깃이 주목하게 하기 위해, 다음을 입력한다.
git add
git add * |
add 뒤의 *는 : 이 곳에 있는 '모든' 파일을 add하겠다 는 의미.
모든 파일이 아닌 하나의 파일(ex. minji 파일)만을 add하고 싶다면 아래와 같이 해도 된다.
어쨌든 명령어를 입력하면, 첫번째 화일을 추가했다는 것을 알 수 있다!
다시 git status로 상태를 확인하면 hello.txt가 초록글자로 적혀진 것을 확인할 수 있다.
이렇게 뜨면 이제 커밋할 수 있는 상태가 된 것입니다~
이제 지금까지의 프로젝트를 “커밋”할 시점이다.
git commit
git commit -m “Add Readme.txt”
-m 는 메시지. 커밋시 파일 관련 내용,
예를들어 어느 부분을 수정했는지 등의 주석 같은 것을 함께 달아 커밋하는 것이다.
그냥 "git commit" 하는 거 아닌가요?
git commit 만 하게 될 경우,
기본 에디터가 열리고 변경 내용을 기록할 수 있는 입력 화면이 나온다.
변경 내용을 설명할 수 있는 텍스트를 입력하고 저장하면 커밋이 생성되는데, 굳이 이 에디터를 보고 싶지 않고 싶을 때, 에디터를 열지않고 터미널에서 바로 메세지를 입력할 수 있는 -m 옵션을 사용해 간편히 커밋을 할 수 있다.
git commit -m "커밋메세지 입니다."
매번 변경사항을 스테이징하고 커밋하는게 번거롭다면 -a 옵션을 사용해도 좋다.
신규 파일을 제외하고 트래킹하는 모든 파일의 변경사항을 스테이징함과 동시에 커밋을 만들 수 있는 옵션이다.
-m과 함께 사용할 수 있다.
git commit -am "스태이징과 커밋을 한번에!"
커밋을 만들지 않고 이전 커밋에 변경사항을 추가하고 싶은 경우도 있다.
가끔 이전 커밋에 미쳐 포함하지 못한 코드가 있을 수 있는데, 이전 커밋에 현재 변경 내용을 추가할 때는 --amend 옵션을 사용한다.
에디터가 뜨면서 마지막 커밋 메세지를 수정하는 화면이 나온다.
저장하고 에디터를 닫으면 이전 커밋에 변경내용이 추가된다.
이제, 로컬에서 작은 작업을 하고 깃허브에 첫 커밋을 ‘push’할 때이다.
아직 온라인 저장소를 로컬 저장소와 연결하지 않은 상태.
로컬 저장소와 온라인 저장소의 첫번째 실제 연결을 만들어보자.
7. 로컬 저장소와 깃허브 저장소 연결하기
먼저, 깃에게 온라인 어딘가가 실제 원격(remote) 저장소인지를 말해주어야 한다.
git add 명령어를 사용하기 전까지는 깃이 우리 파일을 인식하지 않는 것과 마찬가지로,
원격 저장소도 인식하지 않을 것이다.
https://github.com/username/myproject.git에
“lotto”라는 이름의 깃허브 저장소가 있다고 가정해보자.
물론, username은 자신의 깃허브 사용자명으로 바꿔야 한며,
저장소 제목도 자신의 깃허브 저장소 제목으로 바꿔야한다.
[ git remote add origin 자기주소 ]
git remote add origin https://github.com/minjipi/lotto.git
파일이 비롯된(originated) 곳에서 새로운 위치를 가리키기 위해, origin이란 단어를 더했다.
remote는 origin의 설명자(descriptor)이며,
origin이 로컬 컴퓨터가 아닌 온라인 어딘가를 가리킨다는 것이다.
이제 깃이 원격 저장소가 있는 곳과 로컬 저장소가 변경사항을 어디로 보낼지 알게되었다. 확인하기 위해, 다음을 입력한다.
git remote -v
이 명령어는 로컬 저장소가 알고있는 원격 origin에 대한 모든 항목을 보여준다.
지금까지 함께 하였다면, 단 하나이어야 한다. 두 개가 리스트된 것은 정보를 _push_하고 _fetch_할 수 있는 것을 뜻한다.
이제 깃허브 원격 저장소로 변경사항을 업로드나 “push” 해보자.
git push
커맨드 라인에서 여러 줄에 걸쳐 연달아 내놓을 것이고,
마지막으로 “everything up-to-date.”과 같은 것을 밷아낼 것이다.
git push --set-upstream
새로 레포지토리를 만들었는데- 브랜치가 안 만들어져서
우리가 브랜치를 강제로 올려줘야 하는 상황.
git push --set-upstream 이대로 다시 쳐주자.
그럼 다음과 같은 창이 뜰 것이다.
차근차근 아이디와 비번을 입력해준다.
그럼, 끝!
8. All Together Now
이제 공식적으로 깃 사용자가 되었다! 저장소를 만들고 변경사항을 커밋할 수 있다.
이것이 대부분의 입문 튜토리얼의 끝나는 지점이다.
사이트 확인!
Git 명령어 모음
명령 | 설명 |
git status | 깃 상태 확인 |
git add 파일이름 | 스테이지에 저장 |
git commit | 스테이지에 있는 파일로 버전 만들기 |
git log | 저장소에 저장된 버전 확인 |
git commit -am “커밋 메시지” | 스테이지에 올리고 커밋함 (BUT 커밋한적 있는 파일이어야함) |
(git commit -m “함께 저장할 커밋 메시지”)
커밋 내용 확인하기
명령 | 설명 |
git diff | 변경 사항 확인하기 |
git status | 깃 상태 확인 |
git log –stat | 커밋 관련된 파일 확인가능 |
git commit --amed | 방금 커밋한 메시지 수정 |