Tools/Git&GitHub 2019. 2. 12. 11:29

GitHub - 간단한 Git사용법(로컬 레포지토리,원격 레포지토리)



Git이란?

-깃(git)은 프로그램 등의 소스 코드 관리를 위한 분산 버전 관리 시스템입니다. 깃의 작업 폴더는 모두 기록하고 있어서 추적이 가능하고, 완전한 형태의 저장소입니다. 


Github란?

-git을 호스팅해주는 웹 서비스이며,  git 저장소 서버를 대신 유지 및 관리해주는 서비스입니다. 

오픈소스 프로젝트는 무료이며, private 프로젝트는 유료입니다. 다른 유저들과 함께 온라인으로 하나의 프로그램을 제작하는 것도 가능하여, 많은 오픈소스 프로그램들이 github을 통해서 전세계 유저들에 의해 제작되고 있습니다. 




Github를 왜 사용하는가?

-깃허브의 심장에서 작동되는 소프트웨어인 깃(Git: 재수없고 멍청한 놈, 자식)을 만든 유명한 소프트웨어 개발자 리누스 토발즈에 감사한다. 깃은 프로젝트의 어떤 부분도 겹쳐쓰지 않게 프로젝트의 변경을 관리하는 버전관리 소프트웨어이다.

왜 깃같은 것을 사용해야 하나? 당신과 동료가 동시에 같은 웹사이트에서 페이지를 업데이트하고 있다고 하자. 당신이 무언가를 변경하고 저장한 다음 웹사이트에 그것을 업로드한다. 지금까지는 좋았다. 문제는 동료가 동시에 같은 페이지에서 작업할 때이다. 누군가의 작업은 겹쳐쓰여질 것이고 지워질 것이다.

깃과 같은 버전관리 앱은 그런 일을 방지한다. 당신과 동료는 같은 페이지에 각자의 수정사항을 각각 업로드할 수 있고, 깃은 두 개의 복사본을 저장한다. 나중에, 당신들은 그대로 어떤 작업도 잃어버리지 않고 변경사항들을 병합할 수 있다. 깃은 이전에 만들어진 모든 변경사항의 “스냅샷”을 저장하기 때문에 이전 시점의 어떤 버전으로 되돌릴 수도 있다.

깃을 사용할 때 어려운 점은 90년대 해커와 같이 코드를 타이핑하는 명령어(커맨드 라인 - 맥 사용자라면 터미널)를 사용하여 접근해야하는 것이다. 이것은 요즘 컴퓨터 사용자에겐 까다로운 일일 수는 있다. 이제 깃허브를 들여다보자.

깃허브는 두 가지 방식으로 깃을 더 편리하게 해준다. 먼저, 깃허브 소트프웨어를 다운로드하면, 로컬에서 당신의 프로젝트를 관리할 수 있게하는 비주얼 인터페이스를 제공한다. 두번째는, Github.com에 계정을 생성하면 웹에서 프로젝트를 버전관리할 수 있으며, 평가측정 등의 소셜 네트워크 기능을 사용할 수 있다.

다른 깃허브 사용자의 프로젝트를 둘러볼 수 있고, 그것들을 변경하거나 배우기 위해 자신만의 복사본을 다운로드할 수도 있다. 다른 사용자도 당신의 공개 프로젝트에 대해 같은 걸 할 수 있으며 에러를 발견해서 해결책을 제안할 수도 있다. 어느 경우든, 깃이 모든 변경사항에 대한 “스냅샷”을 저장하기 때문에 어떤 데이타도 잃어버리지 않는다.

깃을 배우지 않고 깃허브를 사용할 수 있지만, 사용하는 것과 이해하는 것은 큰 자이점이 있다. 깃을 이해하기 전에도 깃허브를 사용할 수 있으며, 나도 진짜로 이해하는 것은 아니다. 이 튜토리얼에선, 커맨드 라인에서 깃을 사용하는 것을 배울 것이다.



지금 할 것은 무엇인가?

-현재 예제에서 하려고하는 작업은 간단한 Git 명령어를 숙지하고 결론적으로는 원격 레포지토리(Remote Repository)를 만들고 로컬 레포지토리(Local Repository)를 만들어 두개의 레포지토리를 연결하여 로컬 레포지토리에 파일 하나를 생성하여 원격 레포지토리로 보내는 것까지 진행 할 것이다.


▶︎▶︎▶︎깃허브 회원가입하기



위의 링크를 타고 들어가서 깃허브에 로그인 혹은 회원가입을 해줍니다.

가입 이후 원격 레포지토리를 생성해준다(Create New Repository)



윈도우에선 방금 설치한 Git Bash 앱으로, OS X에선 터미널로 시작한다. 



git의 기본정보를 입력해준다. user.name = "your name", user.email = "your email"

git config --list 명령을 통해 입력한 정보가 출력되는 것을 확인 할 수 있다.




다음은 로컬 레포지토리를 만든다.(원격 레포지토리와 연결될 본인 PC의 로컬 레포지토리)





로컬 레포지토리로 사용할 디렉토리를 생성해준다.





생성한 디렉토리에 git의 로컬 레포지토리로 사용하는 디렉토리라고 명령을 내려주는 것이다.





Readme.txt라는 파일을 하나 만들어준다. 그리고 해당 파일의 내용을 원하는데로 수정해준 후에

git status라는 명령으로 로컬 레포지토리의 상태를 확인한다.

"On branch master"란 아직 branch를 생성 혹은 branch off 하지 않았기 때문에

현재는 master branch상에 상주하고 있다는 뜻이다.

그리고 방금 생성한 Readme.txt가 git의 관리하에 존재하지 않는 다는 뜻으로 Untracked files 목록에 뜬다.





"git add Readme.txt"라는 명령으로 이제는 Readme.txt가 git의 관리하에 있는 파일로 되었다. 

그리고 "git commit -m "Add Readme.txt" 명령을 통해 지금까지의 변경사항을

commit 하고, commit message로 "Add Readme.txt"를 남겼다.

커밋 메시지는 현재형으로 작성하는 것이 좋다. 버전 관리는 현재 시점의 변경사항을

반영하는 것이기 때문에 항상 현재형으로 작성하는 것이 사상에 맞는 것 같다.

이제 "git status" 명령어를 치면 Readme.txt가 잘 추가 되어있을 것이다.(new File)


다음은 Remote Repository와 Local Repository를 연결할 것이다.




해당 명령으로 원격 레포지토리에 대한 정보를 입력해줄 수 있다.

"https://github.com/yourname/yourrepositoryname.git"

반드시 url에 ".git"을 붙여주어야한다.

혹시라도 나처럼 .git 안붙이고 잘못 연결한 사람이 있을 것같아서 orgin을 삭제하는 명령어를

예제로 해보았다.






"git remote rm origin"을 통해 현재 연결된 origin을 제거한다.





원격 레포지토리와 로컬 레포지토리가 잘 연결된 것을 볼 수 있다.




다음은 변경사항을 커밋했으니 원격 레포지토리에 push 할 차례이다.

위의 명령어로 원격 레포지토리에 변경사항을 merge할 수 있다.


혹시나 아래와 같은 메시지가 뜬다면 해당 레포지토리의 브랜치가 존재하지 않는 다는 뜻이다.(ex- git push origin branch-1, master branch는 기본으로 생성되는 브랜치이다.)


fatal: The current branch master has no upstream branch.

To push the current branch and set the remote as upstream, use


    git push --set-upstream origin master



"git push -u origin master" 명령을 통해 master branch가 없으면 생성하여 push하라는 명령어를 날려준다.






만약 이미 만들어 놓은 원격 레포지토리가 있고, 그곳에 소스들이 존재한다면 원격 레포지토리를

clone하여서 로컬 레포지토리에 동기화(내려받는다)를 한다.





아까 입력한 메시지와 파일 그리고 파일 내용으로 push가 된것을 확인할 수 있다.




Git의 주요 명령어


깃은 리눅스와 같은 큰 프로젝트를 염두에 두고 디자인되었기 때문에, 깃 명령어는 아주 많다. 그러나, 깃의 기본을 사용할 때에는 몇 개의 명령어만 알면된다. 모두 “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”).

▶︎▶︎▶︎GitHub - Git 사용법 2 (branch, tag, checkout, reset 등)




posted by 여성게
: