프로젝트를 준비하는데 필요한 오픈소스들을 구하기 위해서 구글링을 하시다 보면

Github로 소스를 공유하는 곳이 많이 있을 텐데요.

 

구글링해서 찾은 Github 오픈소스들을 사용하는 방법에 대해서 알아보도록 합시다.

먼저 제가 필요한 기능은 블루투스를 이용한 앱과 아두이노의 통신입니다.

먼저 Fork를 클릭하여 나의 Repositories로 사본을 받아옵니다.

이후에 나의 Repositories로 와서 초록색의 Clone or Download 을 눌러서 주소를 복사해 줍니다.

 

이후 안드로이드 스튜디오를 켜서 File -> New -> Project from Version Control -> Git 을 눌러주세요

Log in to GitHub 로 로그인 해주시고 URL에 위에서 복사한 git URL을 복사해줍니다. 그리고 Clone 클릭

하시면 코드를 불러올 수 있습니다.

 

순서도는 오픈소스 -> 내 Repositories -> Android Studio Project 경로(여기가 git의 로컬경로가 됩니다.)

이후부터는 commit과 push 등은 내 Repositories안에서 관리하기 때문에 똑같이 사용하면 됩니다.

이번에는 간단하게 브랜치를 다루는 방법에 대해서 알아보도록 하겠습니다.

 

좀더 세부적인 내용과 기능들은 다른 편에서 다루도록 하고 이번편에서는 브랜치의 기초적인 내용에 대해서만

 

간단히 배워보도록 하겠습니다. 아 이번시간 부터는 windows에 powershell을 사용하겠습니다.

 

시작버튼에 powershell 검색해 주시면 됩니다~

 

Git 초기설정을 하실줄 모르신다면 다음 글 먼저 읽고 오시면 도움이 될거에요.

https://doingnothing.tistory.com/3?category=784007

 

[GitHub시작하기] 원격 저장소(Repositories) 만들기

이번 글은 개인의 소스 코드를 관리할 때 필요한 Repositories를 만들어보는 시간입니다. 저도 GitHub를 처음 배우게 되었을 때 제일 먼저 배웠던 기능이니만큼 처음 시작하시는 분들에게 꼭 필요한 기능이라고 생..

doingnothing.tistory.com

 

1. 브랜치(branch)란 ?

하나의 원격 저장소를 사용할 때 다수의 작업인원의 소스코드의 버전이 달라질 수 있습니다.

이 때 서로의 소스코드 작업환경이 겹치지 않게 방지하는 기능이라고 할 수 있습니다.

쉽게 말해 저장소나무의 몸통이라하고 브랜치가지라고 나타낼 수 있겠네요

 

이렇게 각각 나온 브랜치들을 나중에 하나의 브랜치로 병합(Merge)할 수 도 있습니다.

* 초기 브랜치는 master 입니다. git status // 명령어로 확인이 가능합니다.

 

 

2. 브랜치를 만들어 보자

(1) 브랜치의 종류

1) 통합 브랜치(Integration Branch)

통합 브랜치란 여러 토픽 브랜치들로 나뉜 브랜치들을 한곳에 모아

언제든지 배포할 수 있는 상태를 유지하면서 안정적인 버전을 만드는 브랜치입니다.

2) 토픽 브랜치(Topic Branch)

토픽 브랜치란 통합 브랜치에 합쳐질 내용들을 단위를 나눠 작업하기 위한 브랜치입니다.

여러개의 작업이 필요한 상황에 통합 브랜치에서 분리시켜 작업 한 후

작업이 완료되는 시점에 통합 브랜치에 다시 병합(Merge) 시키는 브랜치이다.

(2) 브랜치 만들기

git branch // 브랜치 목록을 확인할 수 있습니다.

git branch 브랜치이름 // 브랜치이름 이라는 브랜치를 만들 수 있습니다.

 

3. 브랜치 전환 및 병합

(1) 간단한 용어 설명

1) HEAD

분기에 대한 가장 최근 커밋에 대한 참조(가장 최근에 한 커밋), 분기의 팁

-> 쉽게 말해서 지금 작업하고 있는 브랜치라고 생각하면 됩니다.

HEAD를 움직이면 사용하는 브랜치를 변경하겠다라는 뜻

 

2) Stash

먼저 Stash를 알아보기전에 checkout이라는 브랜치 전환 기능이 있습니다. 뒤에서 알아보도록 하고

브랜치를 전환하는 시점 예를들어 Merge(병합)을 위해 exp 브랜치에서 master 브랜치로 넘어간다 할 때

master에서도 작업하던 파일이나 새롭게 추가된 파일이 작업트리에 남아있는 채로

exp브랜치에서 전환을 하게되면 브랜치 전환에 실패할 수 있습니다.

이를 방지하고자 일시적으로 변경 내용을 다른 곳에 저장하여 충돌을 피한 후 브랜치를 전환할 수 있도록 해주는 기능이 stash 입니다.

-> 변경 내용을 일시적으로 저장해주는 영역 입니다.

(2) 브랜치 전환 및 병합

1) 브랜치 전환

다른 브랜치에서 작업하고자 할 때는 checkout 명령어를 사용하면 됩니다.

git checkout 브랜치명

-> 먼저 master 브랜치를 이외에 새로운 브랜치를 만들어야 겠죠?

자 이제 브랜치를 테스트 해볼게요

먼저 git 로컬 저장소에 txt파일에 내용을 추가해서 변경사항을 주세요

이렇게 추가해주시면 실제 GitHub 원격 저장소에서는

Pull requests로 master브랜치한테 exp브랜치가 코드를 수정했다고 변경 요청을 하게 됩니다.

2) 브랜치 병합(Merge)

git merge

-> merge 명령어를 사용하면 여러 개의 브랜치를 하나로 모을 수 있습니다.

merge의 여러 기능에 대해서는 다음에 더 자세하게 다뤄보도록 할게요.

* 이전 브랜치에서 commit까지 한 상태로 합쳐야 합니다!!

3) 브랜치 삭제

git branch -d 브랜치명 // Merge가 잘 이루어 졌을 때

git branch -D 브랜치명 // Merge에 오류나 잘 이루어지지 않았을 때 강제 삭제

git branㅇㄹch // 브랜치 목록을 확인할 수 있습니다.

 

 

이번 글은 개인의 소스 코드를 관리할 때 필요한 Repositories를 만들어보는 시간입니다.

 

저도 GitHub를 처음 배우게 되었을 때 제일 먼저 배웠던 기능이니만큼

 

처음 시작하시는 분들에게 꼭 필요한 기능이라고 생각합니다.

 

 

먼저 https://github.com/에서 회원가입을 해주세요.

처음 사용하는 닉네임은 신중하게 결정해주세요 앞으로의 자신을 대표하는 이름이 되게 됩니다!

 

회원가입을 하시고 나서

git을 설치해주셔야 합니다. https://www.git-scm.com/ 에서 

Downloads 클릭

사용하고 계시는 운영체제로 다운로드하여 

관리자 권한으로 실행해주시고 Default옵션(전부 Next를 눌러서 설치를 마쳐줍니다.)

 

 

자 이제 다시 회원가입을 했던 github홈페이지에서 로그인을 해줍니다.

로그인을 하신 후에 맨오른쪽 위를 보시면 아이콘이 있는데 아이콘을 클릭후 Your repositories를 클릭해 줍니다.

다음 창에서 New를 클릭해 줍니다.

프로젝트 이름써주시고 프로젝트 설명(꼭 안써도 됨), 공개, 비공개 선택 후에 Create repository 클릭해주세요!

 

지금까지 잘 따라오셨다면 다음화면에서 이상한 영어들로 도배가 되어 있을 텐데요...

간단히 얘기해서 Github에서 "초기 셋팅 명령어들을 이렇게 사용해라" 라고 알려주고 있습니다.

echo "# git-test" >> README.md // README.md 파일 만들기 

git init // 로컬 저장소를 만들기 위해 초기 명령어 

git add README.md // 수정한 파일 staged 상태로 만들기 

git commit -m "first commit" //로컬에서 'first commit' 이란 이름으로 commited 상태로 만들기 

git remote add origin https://github.com/junghyun-lee/git-test.git //로컬에 원격저장소 설정 

git push -u origin master // 로컬 저장소에서 커밋한 파일들 원격저장소로 전송


출처: https://mygumi.tistory.com/23 [마이구미의 HelloWorld]

 

필요한 기능만 눈으로 보면서 알아보도록 할게요

먼저 시작 + R을 누른후 'cmd'를 실행해서 도스창을 열어주세요

로컬저장소로 사용할 곳을 도스창에서 경로를 바꿔줘야 하는데 'cd라는 명령어를 사용할거에요!

같은 드라이브 내 cd 경로명

다른 드라이브 내 cd /D 경로명

 

경로명은 이런식으로 복사하실 수 있구요

해당 위치에서 파일탐색기 누르면 복사할 수 있습니다.

경로 바꾸기 예시

경로 바꾸기 까지 다하셨으면 다음과 같이 초기설정 git init 해주시고

다음 명령어에 "you@example.com" 안에 가입하실 때 사용한 이메일을 "Your Name"안에 닉네임을 적어서 한줄씩 실행해주세요

여기 까지하셨으면 테스트용으로 깃에 연결할 로컬저장소에 test.txt 파일을 하나 만들어주세요

이후에 git add -A // 모든 파일을 추가하고

git status // 현재 상태 확인

갑자기 초록색의 이쁜 글자가 생겼습니다. 얘를 이제 commit 해주게 되면 다음과 같이 뜨고

남은 두 명령어를 실행해 주시면 됩니다.

 

그리고 나서 내 Repositories를 보면 test.txt 파일이 원격저장소에 올라간것을 볼 수 있습니다.

수정되는 사항에 대해서

git add

git commit

git push

명령어만 사용해주시면

다음과 같이 소스 코드를 업데이트하며 기록도 확인 할 수 있습니다.

 

 

 

이번 편에서는 깃의 정말 기초적인 것에 대해 다루게 되어서 아직 감을 못잡으시는 분들도 계실 수 있기 때문에

 

다음편에서 간단히 깃허브 오픈소스를 안드로이드 스튜디오에 가져오는 방법(Fork)등을 알아보도록 하겠습니다.

안녕하세요 세월아네월아입니다.

 

깃허브를 처음 시작할 때 생소한 용어들이 많아서 용어의 간단한 정의에 대해서 포스팅을 해볼려고 합니다.

 

앞으로 공부하면서 알게되는 용어들의 내용들을 계속 꾸준히 업데이트 하도록 할게요~

 

저도 공부한 내용을 정리하고 있는 중입니다. 틀리거나 부족한 부분이 있다면 댓글 부탁드립니다.

 

Ctrl + F 하신 후 에 영어로 검색하시면 찾기 쉬울거에요!

 

GitHub 용어 정리

 

Branch (브랜치) - 브랜치는 가지라는 뜻이다 하나의 저장소에서 여러가지가 뻗어나와 각각의 사용자가 사용할수 있게끔 하는 모양, 하나의 원격 저장소를 사용하다 보면 여러 작업자의 소스코드 버전이 달라질 수 있음 이를 방지하는 기능이 '브랜치'이다, 이렇게 뻗어나온 가지(브랜치)들을 하나의 브랜치로 Merge(병합)하여 하나의 브랜치로 모을 수 있다. 

*저장소를 처음 만들면 master라는 브랜치가 만들어진다.

 

Repository (저장소) - 디텍토리 저장소 및 변경 내용 추적 단위

 

Master (마스터) - 기본의 가장 중심이 되는 Branch(브랜치)

 

Commit (커밋) - 인덱스에 추가 된 파일을 참조하고 분기의 헤드에 최신 상태로 업데이트 (로컬에서 저장한 파일에 대한 변경 사항 추가)

 

Hash (해쉬) - 임의의 길이를 갖는 임의의 데이터에 대해 고정된 길이의 데이터로 매핑하는 함수를 말한다. (하나의 유니크한 )

 

Reference (참조) - 커밋 해시에 해당하는 이름(과거 기록을 연결해주는 기능) git/refs 디텍토리에 저장됨

 

Head (헤드) - 분기에 대한 가장 최근 커밋에 대한 참조(가장 최근에 한 커밋), 분기의 팁(쉽게 말해 지금 작업하고 있는 브랜치)

 

Working Tree (워킹트리) - 분기의 파일을 변경하는 영역, 파일이 변경된 후 커밋 준비가되면 스테이징 영역으로 이동함(추적)

 

*스테이징 영역 - Git이 파일을 추적하기 위해서 해쉬 값을 만들어내는 첫 상황을 만들어내는 영역(변경 사항을 적용하는 준비 영역)

 

Merge (합병) - 나눠진 분기의 파일을 하나의 파일로 만드는 과정(여러 브랜치의 분기가 만나는 과정)

 

Tag (태그) - 특정 히스토리 커밋에 대한 참조

 

Pull Request (풀 요청) - 다른사람이 브랜치에서 완료한 작업을 마스터에서 merge하도록 요청하는데 사용(내 코드를 당신의 오픈소스에 반영해주세요)

 

Fork (포크) - A프로젝트를 직접 변경할 권한이 없는 사용자가 A프로젝트의 변경 내용을 저장하기 위해 내 프로젝트에 A프로젝트의 사본을 가져오는 것(프로젝트의 사본을 가져와 먼저 변경하고 Pull Request 한다)

 

Workflows (작업흐름) - 코드의 변경 사항을 적용하기 위해 취하는 접근 방식

 

Stash - 변경 내용을 일시적으로 저장해주는 영역 입니다.

추가설명 : 먼저 Stash를 알아보기전에 checkout이라는 브랜치 전환 기능이 있습니다. 뒤에서 알아보도록 하고

브랜치를 전환하는 시점 예를들어 Merge(병합)을 위해 exp 브랜치에서 master 브랜치로 넘어간다 할 때

master에서도 작업하던 파일이나 새롭게 추가된 파일이 작업트리에 남아있는 채로

exp브랜치에서 전환을 하게되면 브랜치 전환에 실패할 수 있습니다.

이를 방지하고자 일시적으로 변경 내용을 다른 곳에 저장하여 충돌을 피한 후 브랜치를 전환할 수 있도록 해주는 기능이 stash 입니다.

+ Recent posts