Git/Github
[Github] GIthub에서 README.md 작성하기
README파일을 작성하기 전에 다른 저장소에서는 README파일을 어떻게 사용하는지 살펴보겠습니다. README 파일은 markdown(마크다운) 문법을 사용하기 때문에 확장자는 .md를 사용합니다. README는 단순히 텍스트만 나열할 수 있는 것이 아니라 제목과 본문을 다르게 표현하거나 글씨체를 바꾸는 등 여러 서식을 적용할 수 있습니다. 또한 이미지나 외부 링크도 넣을 수 있습니다. 작성 README파일을 만들기 위해서는 레포지토리안에서 해당 버튼을 클릭하면 됩니다. 버튼을 클릭하면 이런 텍스트 편집기가 나오는데 줄을 바꾸려면 Enter를 두 번 눌러서 빈줄을 만들어주셔야 실제 화면에서 줄바뀜이 되어 나타납니다. Preview를 클릭하면 미리보기를 볼수 있습니다! 커밋 메세지를 ..
[Git & GitHub] 협업하기
깃허브의 원격 저장소를 이용하여 하나의 작업을 여러 사용자가 협업하기 위해서는 각자 지역 저장소에서 작업한 내용을 자유롭게 원격 저장소에서 공유할수 있어야합니다. 1. 공동 작업자 추가하기 깃허브의 공개 저장소는 주소만 알면 누구든 접속하여 소스를 볼수 있습니다. 또한 깃허브 회원이라면 누구나 오픈소스 프로젝트의 소스를 내려 받을수도 있습니다. 하지만 누구나 commit 하거나 push 할수는 없습니다. 여러 사람이 협업을 한다면 승인된 공동 작업자만 commit을 할수 있는 권한을 주어야 소스코드가 무분별하게 수정되는 것을 막아줄수있습니다. 만약 '팀장', '팀원1', '팀원2' 세사람이 깃허브를 통해 협업한다고 가정했을때 팀 작업을 하려면 팀원 중 누군가 원격 저장소를 만들고 나머지 팀원들을 공동..
[Git & GitHub] 원격 브랜치 정보
pull명령은 원격저장소의 최근 커밋을 지역저장소로 당겨오는 명령어입니다. 하지만 최근 커밋을 당겨오기전 원격저장소에 어떤 변화가 있는지 살펴봐야하지 않을까요?? 이럴 때는 원격 브랜치에서 정보만 먼저 가져올수가 있습니다. 원격 master branch 지역저장소의 master브랜치 처럼 원격 저장소도 기본적으로 master브랜치가 생성됩니다. cinetest01을 회사에서 사용하는 저장소라고 가정하고 cinetest02를 집에서 사용하는 저장소라고 가정해보겠습니다. 이 두 지역저장소는 cinetest라는 원격저장소와 연결이 되어있습니다. cinetest 저장소를 보면 master브랜치가 잡혀있으며 home이라는 커밋이 가장 마지막 커밋입니다. $git log --oneline cinetest01 저..
[Git & GitHub] 여러 PC에서 원격 저장소 함께사용하는법
집과 회사, 데스크탑과 노트북과 같이 같은 작업을 여러PC에서 해야할때가 있을수 있습니다. 하나의 깃허브 원격저장소에서 두개의 pc에서 공유하는 방법이 있는데요. 바로 clone을 통해 원격 저장소를 복제하는것 입니다. 원격 저장소를 기존에 연결된 지역저장소 외에 다른 지역 저장소에서 사용하려면 원격 저장소에 담긴 내용 전체를 지역 저장소로 가져와야하는데요. 이를 '복제한다', '클론(clone)', '클로닝(cloning)' 이라고 합니다. 저의 레퍼지토리에 cinetest라는 원격저장소가 있습니다. 저 pc에는 홈디렉터리 아래에 cinetest와 연결된 디렉터리가 있는데요. c드라이브 아래에 cinetest01이라는 저장소와 cinetest02라는 저장소를 각각 만들어 보겠습니다. Reposito..
[Git & GitHub] 깃허브 SSH(Secure Shell) 원격 접속
SSH는 Secure Shell의 줄임말로 보안이 강화된 안전한 방법으로 정보를 교환하는 방식입니다. 사용자 컴퓨터에서 SSH키 생성기를 실행하면 기본적으로 private key와 public key가 만들어지고 두 키를 한 쌍으로 묶어서 컴퓨터를 인증합니다. 말그대로 public은 공개의 의미로 자신 이외의 모든 사람에게 공개한다는 의미이며 private는 비공개라는 의미로 자신이외에 아무에게도 공개하지 않는다는 의미입니다. 일반적으로 깃허브의 원격 저장소에 파일을 올리는 작업을 하기 위해서 아이디와 비밀번호를 입력하여 인증하여야 합니다. SSH 원격 접속은 private 키와 public 키를 사용해 현재 사용하고 있는 기기를 깃허브에 인증하는 방식입니다. 서버 환경에서 깃허브 저장소에 접속해야 한다..
[Git & GitHub] 원격저장소에 파일 올리고 내려받기(push & pull)
원격저장소에 파일을 올려서 백업하고 백업한 파일을 내려받을수가 있습니다. 우선 원격저장소와 연결된 지역저장소에 test.txt라는 파일을 하나 만들고 아무내용이나 작성한뒤 "add a" 라는 메세지로 커밋하겠습니다. $cd ~ $cd local-test $vim test.txt $git add test.txt $git commit -m "add a" 스테이징되고 지역저장소에 test.txt파일이 대기중입니다. 이제 이를 원격 저장소에 올리기 위해서는 push라는 명령이 필요합니다. $git push -u origin master push에 성공했습니다. 위의 명령은 지역 저장소의 브랜치를 origin, 즉 원격 저장소의 master 브랜치로 푸쉬하라는 명령입니다. 여기서 -u 옵션은 지역 저장소의 부..
[Git & GitHub] 원격저장소와 지역저장소 연결
컴퓨터에서 작업을 하고 작업 공간에서 스테이징과 커밋을 했었죠. 이런 작업공간인 작업트리를 만들기 위해서는 git init 명령으로 저장소를 만들어야 했습니다. 이러한 저장소를 지역저장소라 합니다. 또한 깃에서는 지역 저장소와 원격 저장소(remote repository)를 연결해서 버전 관리하는 파일들을 쉽게 백업할수 있습니다. 원격 자정소는 지역저장소가 아닌 컴퓨터나 서버에 만든 저장소를 의미합니다. 깃과 관련해서 가장 많이 사용하는 서비스가 바로 깃허브입니다. 깃허브로 인하여 백업뿐만 아니라 협업하는데 매우 중요한 역할을 합니다. 큰규모의 프로젝트 일수록 원격 저장소의 역할은 더욱 중요해집니다. 깃허브에 원격 저장소를 만들기 위해서는 우선 로그인을 해야합니다. 깃허브에 로그인을 하고 Reposi..
[Git & GitHub] 수정중인 파일 되돌리기(git stash)
브랜치에서 파일을 수정하고 커밋하지 않은 상태에서 다른 파일을 먼저 커밋해야하는 경우가 생긴다면 어떻게 할까요?? 아직 커밋하지 않은 파일들을 그냥 두어도 상관없지만 계속 커밋하라는 메세지가 나타나 번거로울수 있습니다. 또한 실수로 다른 파일과 같이 커밋될수도 있습니다. 이러한 경우 커밋하지 않고 작업중인 파일들을 잠시 감출수 있습니다. 그리고 다른 작업을 끝마친후 감춘 파일을 다시 가져올수 있게됩니다. 이러한 방법에 대해서 알아볼까요? 먼서 홈디렉터리에 stashtest라는 저장소를 만들겠습니다. $cd ~ $git init stashtest $cd stashtest 이때 stash 명령을 사용하려면 파일이 tracked 상태여야 합니다. 최소 한번은 커밋한 상태에서 가능하다는 의미입니다. vim을..
[Git & GitHub] branch 관리
앞서 checkout과 reset 명령어를 본적이 있습니다. 이러한 명령어는 branch와 함께 사용하면 더욱 다양하게 사용할수 있는데요. 먼저 HEAD와 브랜치의 개념부터 보겠습니다. 우선 홈 디렉터리에서 test라는 저장소를 만들어 보겠습니다. $cd ~ $git init test $cd test 그런다음 k1.txt파일을 만들고 아무 내용이나 작성한뒤 k1이라는 메세지로 커밋을 하겠습니다. $vim k1.txt $git add k1.txt $git commit -m "k1" $git log log를 통해 확인했을때 HEAD -> master로 HEAD가 master를 가르키고 있습니다. 여기에서 HEAD는 현재 작업트리가 어떤 버전을 기반으로 작업중인지를 가르키는 포인터입니다. 브랜치를 옮기지 ..
[Git & GitHub] 같은문서 수정 후 merge / 브랜치 삭제
이전 포스팅에서는 merge 하는 방법에 대해서 알아봤는데요. 만약 같은 문서를 수정하고 merge하면 어떻게 될까요?? 같은문서에 다른위치의 수정 후 병합 먼저 같은 문서에서 다른 위치를 수정하고나서 merge를 해보겠습니다. 홈 디렉터리에서 merge01 디렉터리를 만들어 저장소로 만들고 이동하겠습니다! 그리고 test.txt파일을 만들어서 내용을 작성한뒤(내용은 스크린 샷을 확인해주세요) "test 1"이라는 메세지로 커밋하겠습니다. $cd ~ $git init merge01 $cd merge01 $vim test.txt $git add test.txt $git commit -m "test 1" t2 브랜치를 만들어주세요! $git branch t2 $git log master브랜치과 t2브..