반응형

(github)깃허브 - 비주얼 스튜디오 코드(Visual Studio Code)에서 깃 활용하기

 

이전 포스팅까지는 윈도우의 cmd를 통해 깃과 깃허브를 사용하는 방법에 대해서 포스팅했습니다.

이번 포스팅에서는 비주얼 스튜디오 코드(VS Code)에서 깃을 사용하는 방법에 대해서 포스팅하겠습니다.

 

비주얼 스튜디오 코드에서 깃 시작하기

먼저 git_test 폴더를 만들겠습니다.

 

다음은 비주얼 스튜디오 코드에서 git_test 폴더를 열어줍니다.

 

좌측에 탐색기 아이콘이 선택되어 있고 폴더명이 나오며 아무 파일도 없는 상태입니다.

3번째에 있는 소스제어 아이콘을 클릭합니다.

 

소스제어 버튼을 클릭 후 리포지토리 초기화를 클릭합니다. 이것은 폴더에서 git init 명령어를 실행하는 것과 같습니다.

 

이제 다시 git_test 폴더를 열어보면 깃이 생성된 것이 확인됩니다.

 

비주얼 스튜디오 코드에서 스테이지에 올리기 및 커밋하기

먼저 README.md 파일을 만들겠습니다.

탐색기 아이콘을 클릭하고 폴더명 옆에 새파일 아이콘을 클릭합니다.

 

파일명을 입력하고 우측 편집창에서 내용을 입력하고 저장(Ctrl+S)합니다.

파일명 우측에 U 마크는 untracked 파일이라고 알려주는 표시입니다.

 

이제 만든 파일을 스테이지에 올리겠습니다.

3번째 소스제어 아이콘을 보면 1이라는 숫자가 있습니다. 아이콘을 누르고 소스제어 창에 들어가면 변경 사항에 위에서 만든 README.md 파일이 나타납니다. 변경 내용 스테이징 버튼인 + 아이콘을 클릭합니다.

 

스테이징이 완료되면 스테이징된 변경 사항이 생깁니다.

README.md 파일에 마우스를 올리면 인덱스 추가 되었다고 알려줍니다.

README.md 파일 우측에 - 아이콘은 스테이징을 취소하는 아이콘입니다.

 

이제 스테이지 올린 README.md 파일을 커밋하겠습니다.

소스제어 창 위쪽에 있는 커밋 아이콘을 클릭합니다. (커밋 단축키: Ctrl+Enter)

 

커밋 메세지 입력창에 내용을 입력하고 Enter를 누릅니다.

 

커밋이 완료되면 스테이징된 변경 사항에 있던 README.md 파일이 사라집니다.

커밋 log를 확인하고 싶다면 ctrl+shift+` 키를 눌러 VS Code의 터미널창을 열고 git log 명령어를 입력합니다.

 

만약 스테이징이나 커밋을 취소하고 싶다면 보기 및 기타작업 아이콘을 누르고 원하는 메뉴를 찾아가서 간단히 클릭하여 취소할 수 있습니다.

 

 

원격저장소(Github)에 push 및 pull 하기

먼저 깃허브에 원격저장소를 만듭니다. 자세한 방법은 이전 포스팅을 참조바랍니다.

reddb.tistory.com/151

 

(github)깃허브 - 깃허브 가입하기 및 원격저장소 이용하기

(github)깃허브 - 깃허브 가입하기 및 원격저장소 이용하기 이전 포스팅까지는 git에 대해서 설명드렸습니다. 이번 포스팅부터는 github에 대해서 설명드리겠습니다. 깃허브 가입 및 원격저장소 생

reddb.tistory.com

 

저는 제 계정에 git_test.git으로 원격저장소를 하나 만들었습니다.

주소는 https://github.com/본인계정명/git_test.git 입니다.

 

비주얼 스튜디오 코드에서 터미널을 열어줍니다.(단축키 Ctrl+Shift+`)

터미널창에 git remote add origin https://github.com/본인계정명/git_test.git 명령어를 입력합니다.

그리고 git remote -v 명령어로 원격저장소를 확인합니다.

 

이제 원격저장소(github)로 푸시하겠습니다.

소스제어 창에서 보기 및 기타작업 아이콘을 클릭하고 다음으로 푸시를 클릭합니다.

 

처음 푸시할때는 알림창이 뜹니다. 확인을 클릭합니다.

 

깃허브 계정을 묻는 창이 뜨면 계정과 패스워드를 입력하고 로그인합니다.

 

Visual Studio Code에서 깃허브를 사용하여 로그인하기를 허용합니다.

 

브라우저가 열리고 깃허브사이트에 접속됩니다.

깃버흐에 액세스 할 수 있도록 VS Code에 권한 부여를 할건지를 묻습니다. Continue를 클릭합니다.

 

다음으로 VSCode용 깃허브에서 추가권한 요청을 한다고 나옵니다.

Authorize github 버튼을 클릭합니다.

 

성공했다고 뜹니다. 그리고 VS Code에서 확장 URI를 열도록 허용하는지 물으면 열기를 클릭합니다.

 

브라우저의 원격저장공간(깃허브)을 새로고침하면 README.md 파일이 push 된것이 확인됩니다.

 

두번째 커밋을 위해 편집창에서 README.md 파일에 내용을 추가 입력 및 저장합니다.

내용을 추가 입력 저장하면 소스제어 - 변경 사항 목록에 README.md 파일이 나타나며 파일수정이 있었다는 M 표시가 나타납니다.

 

이제 소스제어에 있는 README.md 파일을 클릭해봅니다.

어떠한 변경사항이 있었는지를 양쪽으로 분활하여 보여줍니다.

 

두번째 커밋을 하기 위해 메세지를 입력하고 커밋 아이콘을 클릭 합니다.

한번 커밋한 파일이라면 두번째 커밋부터는 스테이징과 커밋을 한번에 진행 할 수 있습니다.

 

스테이징을 하고 커밋하겠냐고 묻는 창이 나오면 예를 클릭합니다.

 

이제 변경 사항에 README.md 파일이 사라졌습니다.

원격저장소에 두번째 커밋을 푸시하겠습니다.

 

원격저장소(깃허브)를 새로고침해보면 두번째 커밋이 올라간 것이 확인 됩니다.

 

원격저장소의 커밋을 pull 해보겠습니다.

현재는 지역저장소와 원격저장소가 동기화되어 있어 변경사항을 만들어줘야 합니다.

깃허브 사이트내에서 README.md 파일을 수정하고 커밋을 하나 생성하겠습니다.

자세한 사항은 이전 포스팅을 참조하세요

reddb.tistory.com/151

 

(github)깃허브 - 깃허브 가입하기 및 원격저장소 이용하기

(github)깃허브 - 깃허브 가입하기 및 원격저장소 이용하기 이전 포스팅까지는 git에 대해서 설명드렸습니다. 이번 포스팅부터는 github에 대해서 설명드리겠습니다. 깃허브 가입 및 원격저장소 생

reddb.tistory.com

 

저는 아래와 같이 내용을 수정하고 커밋하였습니다.

 

현재 VS Code 편집창에 README.md 파일을 보면 두번째 커밋에 대한 내용까지 존재합니다.

이제 VS Code에서 풀을 합니다. 

 

풀이 완료 되면 VS Code 편집창에 README.md 파일에 세번째 커밋 내용이 나타납니다.

원격저장소에서 커밋한 3번째 커밋을 pull 한 것입니다.

 

[github]깃허브 전체보기

 

'(github)깃허브' 카테고리의 글 목록

전산 관련 경험을 기록 하는 곳

reddb.tistory.com

 

반응형
반응형

(github)깃허브 - 깃허브를 이용한 협업방법

 

이전 포스팅에서는 깃허브를 가입하고 원격저장소를 이용하는 방법에 대해서 설명드렸습니다.

이번 포스팅에서는 이전포스팅에서 만든 깃허브 자료를 여러 컴퓨터에 복제하고 함께 사용 및 동기화하여, 협업에 사용하는 방법을 설명드리겠습니다.

 

다른 컴퓨터에서 원격 저장소 복제하기 (git clone)

먼저 두개의 폴더를 만들겠습니다. 깃은 폴더별로 만들어지기 때문에 두개의 폴더를 각각 집PC, 사무실PC로 인식하고 보셔도 됩니다.

이제 두 폴더에서 git clone 깃허브주소 명령어를 실행하여 깃을 복제하겠습니다.

주소는 깃허브의 Code 버튼을 누르면 나옵니다.

 

git_home과 git_office 폴더를 열어보면 폴더안에 test-1이라는 폴더가 생깁니다.

이제 두 폴더에 파일, 깃로그, 원격저장소도 복제 된 것을 확인합니다.

 

 

집에서 추가 커밋하고 회사에서 내려받기(동기화)

이제 git_home\test-1 폴더에서 home.txt 파일을 만들고 1열에 "home commit AAA"를 입력 저장하겠습니다.

git add home.txt 명령으로 스테이징을 하고, git commit -m "home commit" 명령으로 커밋을 추가한 후 git push 명령으로 깃허브에 올리겠습니다.

 

깃허브 홈페이지를 새로고침 해서 새로운 커밋이 올라온 것을 확인합니다.

 

이제 git_office\test-1 폴더에서 내려받기를 통해 동기화를 해보겠습니다.

현재 git_office\test-1 폴더에는 home.txt 파일도 없고, 추가된 home commit도 없는 상태입니다.

 

이제 git pull 명령을 입력합니다.

폴더에 커밋 로그가 추가되고, home.txt 파일도 생긴 것을 확인합니다.(동기화 완료)

 

원격저장소 변경사항 확인 후 병합하기(git fetch)

만약 다수가 팀작업을 할때 타인이 수정한 원격저장소 최종 커밋을 내려받기(pull)을 하면 나의 PC 폴더가 그대로 동기화 되버립니다.

어떤 변화가 있는지 확인 후 동기화를 하고 싶을 때 사용할 수 있는 방법이 git fetch 명령입니다.

git fetch는 커밋 정보를 FETCH_HEAD라는 브랜치로 가져오지만 merge는 하지 않습니다.

 

먼저 git_office\test-1 폴더에 office.txt 파일을 만들고 1열에 "office commit BBB"를 입력 및 저장합니다.

그리고 git add office.txt 명령으로 스테이징, git commit -m "office commit" 명령으로 커밋, git push 명령으로 깃허브에 업로드합니다.

 

이제 git_home\test-1 폴더에서 git fetch 명령을 입력합니다.

 

그리고 git log --oneline --branches --graph 명령어로 확인 해보면 추카된 커밋과 브랜치는 보이지 않습니다.

폴더를 확인해 봐도 office.txt 파일은 보이지 않습니다.

 

하지만 git status 명령어로 상태를 확인하면 현재브랜치가 origin/master에 비해 1개의 커밋이 뒤쳐저 있다고 나옵니다. 그리고 git pull 명령으로 업데이트 하라고 알려줍니다.

 

git checkout FETCH_HEAD 명령으로 FETCH_HEAD 브랜치로 이동합니다.

git log --oneline 명령으로 office 커밋이 동기화된 상태를 확인합니다. 

git_office\test-1 폴더를 보면 office 파일도 존재합니다.

 

fetch한 내용의 확인이 끝나면 브랜치를 합쳐야 합니다.

첫번째 방법은 git pull 명령어로 내려받을 수도 있습니다. (위에서 이미 설명드렸음)

두번째 방법은 master 브랜치에서 merge 명령으로 브랜치를 합치는 방법입니다. 이 방법으로 합쳐보겠습니다.

 

git checkout master 명령으로 마스터 브랜치로 이동 후, git merge FETCH_HEAD 명령으로 브랜치를 합칩니다.

 

 

내PC(지역저장소) 브랜치를 깃허브(원격저장소)에 push 하고, 깃허브에서 병합(merge) 하기

git_home\test-1 폴더에서 sub 브랜치를 만들고 원격저장소로 push 하겠습니다.

(항상 작업 전에 동기화를 해주는게 좋습니다. git pull 명령어를 입력합니다.)

 

git checkout -b sub 명령어로 sub 브랜치를 만듦과 동시에 checkout으로 브랜치를 이동합니다. (-b 옵션은 뒤에 나오는 브랜치를 만들면서 이동하는 옵션입니다.)

 

git_home\test-1 폴더에 sub.txt 파일을 생성하고 1열에 "sub commit AAA" 입력 및 저장합니다.

git add sub.txt 명령으로 스테이징, git commit -m "sub commit" 명령으로 커밋을 합니다.

 

이제 원격저장소로 push를 해야합니다. 지역저장소 sub 브랜치에서 원격저장소 sub 브랜치로 push 하겠습니다.

git push origin sub 명령을 입력합니다.

 

깃허브 홈페이지에서 새로고침을 해보면 브랜치가 2개로 확인됩니다.

하지만 마스터 브랜치에서는 sub.txt 파일이 보이지 않습니다.

 

마스터 를 클릭하고 sub 브랜치로 스위치를 하면 sub.txt 파일이 나오는 것을 확인 할 수 있습니다.

 

이제 깃허브에서 풀리퀘스트(pull request)를 통해 병합을 진행하겠습니다. 2 branches를 클릭합니다.

 

Your branches의 New pull request를 클릭합니다.

 

남길 코멘트를 적고 Create pull request를 클릭합니다. 그리고 Pull requests 내용을 확인 합니다.

 

내용에 문제가 없다면 Merge pull request를 클릭하고 Confirm merge도 클릭합니다.

 

< > Code를 클릭하면 master 브랜치에도 sub.txt 파일이 보일 것입니다. sub에서 Merge pull request 됐다는 내용도 보입니다.

 

다시 2branches를 클릭해봅니다.

 

브랜치가 병합된 상태라고 알려줍니다. 누가 병합을 했는지도 알려줍니다.

 

[github]깃허브 전체보기

 

'(github)깃허브' 카테고리의 글 목록

전산 관련 경험을 기록 하는 곳

reddb.tistory.com

 

반응형
반응형

(github)깃허브 - 깃허브 가입하기 및 원격저장소 이용하기

 

이전 포스팅까지는 git에 대해서 설명드렸습니다.

이번 포스팅부터는 github에 대해서 설명드리겠습니다.

 

깃허브 가입 및 원격저장소 생성하기

깃허브에 가입하기 위해 아래 사이트에 접속을 합니다.

github.com/join?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F&source=header-home

 

GitHub: Where the world builds software

GitHub is where over 56 million developers shape the future of software, together. Contribute to the open source community, manage your Git repositories, review code like a pro, track bugs and feat...

github.com

 

깃허브 홈페이지 우측 상단에 sign up 버튼을 클릭합니다.

 

이름, Email주소, 비밀번호(문자8자+숫자1자 이상)을 입력합니다.

비정기적인 소식을 이메일로 받고 싶다면 체크박스를 체크합니다.

내가 인간인지를 확인하는 퀴즈를 맞추고나면 녹색 체크 이미지로 변경됩니다.

그리고 Create account 버튼을 클릭해서 계정을 생성합니다.

 

다음으로는 설문조사를 진행합니다.

 

이메일 주소를 확인하라는 안내가 나옵니다.

본인 이메일로 들어가서 Verify email address 버튼을 눌러서 인증하면 회원가입이 완료됩니다.

 

이제 깃허브 사이트에 로그인 후 우측 상단에 + 버튼을 클릭합니다.

그리고 New repository를 클릭하여 새로운 원격저장소를 만들어 줍니다.

 

저장소 이름을 작성하고, 설명부분도 작성합니다.

저장소를 공개할지(Public) 비공개할지(Private)도 설정하고 Create repository 버튼을 클릭합니다.

Add a README file은 소개와 설명을 닮은 README파일을 자동으로 생성해주는 옵션입니다.

Add .gitignore는 어떤 언어와 관련된 파일들을 gitignore 파일에 지정할지를 선택하는 옵션입니다.

Add a License는 원하는 라이선스를 지정할 수 있습니다.

 

저장소 주소가 생성된 것을 확인할 수 있습니다.

주소는 "github.com/내아이디/저장소이름" 으로 만들어집니다.

 

 

깃의 저장소를 깃허브 원격저장소로 연결하기

먼저 git으로 지역저장소를 만들어 줍니다.

저는 이전 포스팅과 마찬가지로 git_test 폴더에서 작업을 하겠습니다. (git init)

 

폴더안에 test.txt 파일을 생성하고 1열에 "github test AAA" 입력하고 저장합니다.

 

git add test.txt 명령어로 스테이징을 하고, git commit -m "github test AAA" 명령어로 커밋을 합니다.

 

이제 깃허브에 만들어 놓은 test-1 원격저장소로 연결하겠습니다.

원격 저장소를 연결하는 명령어는 git remote add origin 깃허브원격저장소주소 입니다.

이 명령은 깃에게 원격저장소 주소를 origin이라는 단어로 추가해 줍니다.

(깃의 기본 브랜치가 master이듯이, 기본 원격저장소는 origin을 사용합니다)

git remote -v 명령어를 입력하면 지정한 원격저장소를 확인할 수 있습니다.

 

 

원격저장소에 파일 올리기(push)

이제 커밋된 자료를 원격저장소(origin)로 올리겠습니다

git push -u origin master 명령을 입력합니다. 원격저장소(origin)의 master 브랜치로 올리는 명령입니다.

(-u 옵션은 지역저장소의 브랜치를 원격저장소의 master 브랜치에 연결하기 위한 것으로 처음 한번만 사용합니다)

 

푸시가 끝나면 웹브라우저로 깃허브 저장소로 들어가서 새로고침을 합니다.

위에서 만든 파일과 깃정보가 제대로 올라간 것을 확인 합니다.

 

우측에 있는 1 commits를 눌러보면 지역저장소에서 커밋했던 내용과 똑같이 올라온 것을 확인할 수 있습니다.

 

이후에 추가로 하는 push는 좀 더 쉽게 가능합니다.

test.txt파일 2열에 "github test BBB"를 추가로 입력 저장합니다. git commit -am "github test BBB" 명령어로 커밋을 합니다.

 

이제 원격저장소(origin)의 master 브랜치로 push를 하겠습니다.

이번에는 간단하게 git push 명령어만 입력하면 push가 됩니다.

 

깃허브가 접속되어 있는 웹브라우저를 다시 새로고침해서 확인해 봅니다.

우측 상단에 2 commits도 확인해 봅니다.

 

 

깃허브 사이트에서 직접 커밋하는 방법

깃허브 사이트에 내에서 새로운 파일을 추가하고 사이트 내에서 커밋을 해보겠습니다.

먼저 Add file을 클릭 후 Create new file을 클릭합니다.

 

파일 이름과 내용을 입력합니다.

 

 

브라우저 화면의 아래로 내려가서 master 브랜치에 Commit new file을 클릭합니다.

(기본적인 커밋 메세지가 입력되어 있습니다. 수정이 가능합니다.)

 

커밋이 완료되면 아래처럼 커밋한 내용을 보여줍니다.

우측에 3commits를 클릭하고 커밋 내용도 확인을 합니다.

 

Verified(확인됨) 버튼은 깃허브에서 커밋을 하는 경우 생성됩니다.

확인된 깃허브의 키를 이용하여 서명되었음을 알려줍니다.

 

원격저장소에 파일 내려받기(pull)

먼저 현재 상태를 확인 합니다.

git remote -v 명령어로 원격저장소를 확인합니다.

git log --oneline 명령어로 커밋되어 있는 로그를 확인합니다.

 

이제 위에서 원격저장소인 깃허브 홈페이지에서 커밋한 "made_in_github" 파일을 git pull origin master 명령어로 내려받아 보겠습니다.

그리고 git log --oneline 명령어로 확인하면 커밋이 추가된 것을 확인할 수 있습니다.

 

이제 git_test 폴더를 확인해 보면 made_in_github 파일이 내려받기(pull) 된것을 확인 할 수 있습니다.

 

다음 포스팅에서는 깃허브를 이용하여 집과 사무실의 각 폴더를 같은 (git)상태로 동기화 하는 방법에 대해서 설명드리겠습니다.

 

[github]깃허브 전체보기

 

'(github)깃허브' 카테고리의 글 목록

전산 관련 경험을 기록 하는 곳

reddb.tistory.com

 

반응형
반응형

(github)깃허브 - 깃(git) 사용법4 브랜치 병합하기

 

이전 포스팅에서는 브랜치를 만들고 이동하는 방법에 대해서 포스팅하였습니다.이번 포스팅에서는 브랜치를 마스터로 병합하는 방법에 대해서 포스팅하겠습니다.

 

서로 다른 파일 병합하기

먼저 이전에 만들었던 내용을 모두 삭제하고 git_test폴더에서 git init을 실행합니다.

 

git_test 폴더에 master.txt 파일을 만들고 1열에 "master AAA"를 입력 및 저장합니다.

 

이제 git add master.txt 명령어와 git commit -m "master AAA" 명령어를 입력하여 커밋을 만듭니다.

 

다음은 sub라는 브랜치를 만듭니다. 명령어는 git branch sub 입니다.

 

git log를 해보면 현재 master, sub 브랜치 모두 첫번째 커밋한 "master AAA" 메세지를 가리키고 있는것을 확인 할 수 있습니다.

 

이제 git_test 폴더에 master2.txt 파일을 만들고 1열에 "master2 BBB"를 입력 및 저장합니다.

 

git add master2.txt 명령어와 git commit -m "master2 BBB" 명령어로 2번째 커밋을 만들어 주고 git log를 확인합니다. 그럼 HEAD가 마스터를 가르키고 있고 마스터는 최신 커밋인 master2 BBB에 있습니다.

 

이제 git checkout sub 명령어로 sub 브랜치로 이동합니다. 그러면 HEAD는 sub 브랜치를 가르키고 sub 브랜치는 master AAA 메세지로 커밋한 곳에 있습니다. 또한 git_test 폴더를 보면 master2.txt 파일이 사라진것을 확인 할 수 있습니다.

git_test 폴더에 sub.txt 파일을 만들고 1열에 "sub AAA"를 입력하고 저장합니다.

 

그다음 git add sub.txt 명령어와 git commit -m "sub AAA" 명령어를 입력하여 커밋을 만들어줍니다. 그리고 git log --oneline --branches --graph 명령어로 브랜치들의 로그를 확인합니다.

 

위 사진에서 보듯이 master2 BBB와 sub AAA는 master AAA라는 같은 부모에서 분기된 것을 확인 할 수 있습니다. 이제 분기된 두 브랜치를 합치도록 하겠습니다.

 

git checkout master 명령어를 입력하여 마스터 브랜치로 이동합니다.

이동 후 git_test 폴더를 보면 sub.txt파일은 사라지고 master2.txt 파일이 다시 살아난 것을 확인 할 수 있습니다.

 

이제 git merge sub 명령어를 입력하면 sub 브랜치를 master로 병합하게 됩니다.

git log로 확인해보면 두개의 브런치가 최신 커밋으로 합쳐진것을 확인 할 수 있습니다.

git_test 폴더를 확인해보면 sub.txt 살아난 것을 확인 할 수 있습니다.

 

git merge를 할때 에디터를 열어 머지 메세지를 수정하고 싶다면 --edit 옵션을 명령어와 함께 적어주면 됩니다.

반대로 기본값으로 머지 시 자동으로 편집기가 뜨는 경우 --no-edit 옵션을 명렁어와 함께 적어주면 메세지를 수정하지 않고 바로 머지가 됩니다.

 

 

같은 문서의 다른 빈라인을 수정했을 때 병합하기

이번에는 하나의 파일에서 1열은 master가 수정하고, 2열은 sub가 수정했을때 두 브랜치를 합치는 방법에 대해서 설명하겠습니다.

 

먼저 git_test 폴더에 모든 파일을 삭제하고 git init을 실행합니다.(초기화)

 

git_test 폴더에 master.txt 파일을 생성하고 1, 3, 5열에 아래와 같이 master, sub, end를 입력 후 저장합니다.

 

git add master.txt 명령어와 git commit -m "master / sub / end" 명령어를 입력해서 첫 커밋을 만들어 줍니다.

 

다음은 git branch sub 명령어로 sub 브랜치를 만들어 줍니다. (HEAD는 마스터인 상태)

 

이제 git_test 폴더에 master.txt 파일을 열고 2열에 "AAA"를 입력 및 저장합니다.

그리고 git commit -am "master AAA / sub / end"로 커밋합니다.

 

다음은 git checkout sub 명령어로 sub 브랜치로 이동합니다. 

이동 후 master.txt를 열어보면 처음에 커밋한것 처럼 1, 3열에 master, sub가 존재합니다.

 

이제 master.txt 파일의 4열을 "BBB"로 입력 후 저장합니다.

그리고 git commit -am "master / sub BBB / end"로 커밋을 만들어 줍니다.

 

이제 git checkout master 명령어로 마스터 브랜치로 이동합나다.

그리고 git merge sub 명령어로 두 브랜치를 합칩니다. git log로 확인해보면 두 브런치가 하나로 합쳐진 것을 확인할 수 있습니다.

maste.txt 파일을 열어보면 2, 4열에 AAA, BBB가 모두 입력되어 있는것도 확인 할 수 있습니다.

 

 

같은 문서의 같은 위치를 수정했을 때 병합시 발생하는 충돌 해결하기

먼저 git_test 폴더에 모든 파일을 삭제하고 git init을 실행합니다.(초기화)

 

master.txt 파일을 생성하고 1열에 "maste_"를 입력 저장합니다.

 

git add master.txt 명령어와 git commit -m "master_" 명령어로 첫 커밋을 만듭니다.

 

git branch sub 명령어로 sub 브랜치를 반들어 줍니다.

 

master.txt 파일 1열을 "master_master2_"로 수정 저장합니다.

그리고 git commit -am "master_master2_" 명령어로 커밋을 만들어 줍니다.

 

이제 git checkout sub 명령어로 sub 브랜치로 이동합니다.

 

그리고 master.txt 파일을 열고 1열을 "master_sub"로 수정 저장합니다.

이후 git commit -am "master_sub" 명령어로 sub 브랜치의 커밋을 만들어 줍니다.

 

git checkout master 명령어로 다시 마스터 브랜치로 이동합니다.

 

그리고 git merge sub 명령어로 병합을 시도하면 충돌이 일어 납니다.

 

master.txt 파일을 열어 보면 아래와 같이 충돌 내용을 나눠서 적혀있습니다.

 

<<<HEAD부터 ===사이의 내용은 현재 브랜치에서 수정한 내용입니다.(master_master2_)

===부터 >>>sub 사이의 내용은 병합할 브랜치에서 수정한 내용입니다.(master_sub)

 

이제 충돌난 병합인 master.txt 파일을 열어 원하는 내용으로 직접 수정 저장합니다.

 

그리고 git commit -am "master_master2_sub" 명령어로 커밋을 합니다.

그리고 git log --oneline --branches --graph 명령어로 브랜치와 커밋 관계를 확인합니다.

 

병합이 끝난 브랜치 삭제방법

위에서 만들었던 브랜치를 활용해서 sub를 삭제해보겠습니다.

 

먼저 브랜치를 삭제하기 전에 반드시 git checkout master 명령어로 마스터 브랜치로 이동을 해야합니다.

그리고 git branch -d sub 명령어로 sub 브랜치를 삭제합니다.

(만약 마스터로 병합되지 않은 브랜치를 삭제하려는 경우는 오류가 납니다. 이럴 경우는 -d 대신 -D 옵션을 사용하면 강제로 브랜치를 삭제할 수 있습니다.)

 

기존파일 수정중 기존파일을 제외한 새로운 파일만 커밋하고 싶을때

이번에는 git stash에 대해서 설명하겠습니다.

만약 제가 test1.txt 파일을 커밋 후 이어서 수정을 하고 있던 도중, 갑자기 test2.txt를 추가해서 커밋을 하나더 만들어야 할 경우가 있다고 가정해보겠습니다.

하지만 저는 text1.txt 파일의 수정이 완료되지 않아 text1.txt 파일은 커밋에서 제외하고 싶고 새로운 파일 test2.txt 파일만 커밋을 하고 싶은 상황입니다. 이럴때 사용하는 명령어가 git stash 입니다.

 

먼저 git_test 폴더에 모든 파일을 삭제하고 git init을 실행합니다.(초기화)

 

그리고 st라는 저장소(폴더)를 만들기 위해서 git init st 명령어도 실행합니다.

 

이제 test1.txt 파일을 만들고 1열에 "AAA"를 입력하고 저장합니다.

git add test1.txt 명령어와 git commit -m "test1 AAA" 명령어로 커밋까지 완료합니다.

 

이제 test1.txt 파일 2열에 "BBB"를 입력하고 저장합니다.(add와 commit은 하지 않습니다.)

그리고 git status 로 상태를 확인합니다. test1.txt의 변화가 있음을 확인합니다.

 

이제 test2.txt 파일을 생성하고 1열에 "111"을 입력 및 저장합니다.

그리고 git status를 확인하면 test2.txt 파일은 Untracked 쪽에 있는 것을 확인합니다.

 

이제 test1.txt 파일은 빼고 test2.txt만 커밋해보도록 하겠습니다.

먼저 git stash 명령으로 현재 상태를 임시 저장합니다. (단, Untracked 쪽 파일은 저장이 안됩니다.)

그리고 다시 git status 명령어를 입력하면 기존에 수정됐다고 표시됐던 test1.txt 파일이 안보입니다.

 

그리고 test1.txt 파일을 열어보면 수정중이던 내용이 첫 커밋 상태로 돌아간 것을 확인할 수 있습니다.

 

이제 test2.txt 파일을 커밋하기 위해 git add test2.txt 명령어와 git commit -m " test2 111" 명령어를 입력합니다.

test1.txt, test2.txt 파일을 열어보면 아래와 같은 값이 입력되어진 상태입니다.

 

test2.txt 커밋전에 stash로 저장했던 내용을 확인하는 명령이 git stash list 입니다. 입력합니다.

저장된 내용을 꺼내는 명령어는 git stash pop 입니다. 입력합니다.

(stash 저장과 꺼내기는 스택구조입니다. 후입선출)

그러면 test1.txt 파일이 수정중이라는 메세지와 함께 test1.txt 파일의 내용 또한 저장했을 때 내용으로 복구됩니다.

 

위에서 설명드린 명령어 중 git stash pop은 저장된 stash 리스트를 후입선출로 삭제와 함께 꺼내옵니다.

만약 삭제 없이 꺼내오고 싶다면 git stash apply 명령어로 꺼내오면 stash 리스트에 저장 내용이 남아있습니다.

그리고 리스트의 내용을 삭제하고 싶다면 git stash drop 명령어로 삭제가 가능합니다. 삭제는 가장 최근 항목부터 삭제 됩니다.(스택구조)

 

 

[github]깃허브 전체보기

 

'(github)깃허브' 카테고리의 글 목록

전산 관련 경험을 기록 하는 곳

reddb.tistory.com

 

반응형
반응형

(github)깃허브 - 깃(git) 사용법3 브랜치 만들기

 

이전 포스팅에서는 깃을 만드는 방법과 되돌리는 방법에 대해서 포스팅했습니다.

이번 포스팅에서는 깃의 브랜치를 만들는 방법에 대해서 포스팅하겠습니다.

 

브랜치를 만들기 전에 마스터의 커밋 로그를 쌓아 보도록 하겠습니다. 작업순서는 아래와 같이 하겠습니다.

  1. git_test 이름으로 새 폴더를 생성
  2. cmd에서 git_test 폴더로 이동하여 git init을 실행
  3. git_test 폴더에 git_test.txt 텍스트 파일을 생성
  4. git add git_test.txt 명령어로 파일을 스테이징
  5. git_test.txt 텍스트 파일 1열에 "AAA" 입력 및 저장
  6. git commit -am "1line AAA" 커밋 명령어 실행
  7. git_test.txt 텍스트 파일 2열에 "BBB" 입력 및 저장
  8. git commit -am "2line BBB" 커밋 명령어 실행
  9. git_test.txt 텍스트 파일 3열에 "CCC" 입력 및 저장
  10. git commit -am "3line CCC" 커밋 명령어 실행
  11. git log 명령어로 위에서 만든 3개의 커밋 로그를 확인

위의 작업순서대로 만든 폴더와 깃 로그 사진입니다.

 

새로운 브랜치 만들기

깃에서 브랜치를 만들거나 확인하는 명령어는 git branch 입니다. 현재는 master만 있는 상태입니다.

 

여기에 kim이라는 브랜치를 만들겠습니다. 명령어는 git branch kim 입니다. 그리고 브랜치 상태를 확인합니다.

 

브랜치를 추가한 후에 git log 명령어를 해보면 작업중인 브랜치를 가리키는 HEAD가 master와 kim을 가리킵니다.

 

위와 같은 방법으로 lee, park 브랜치를 추가해 줍니다.

 

브랜치 이동하기

이제 git_test.txt 파일 4열에 "DDD"를 추가 입력하고 저장해줍니다.

그리고 git commit -am "4line DDD" 명령어를 입력합니다.

4열에 "DDD" 추가입력 및 저장

 

이제 git log --oneline 명령어를 입력해봅니다. (--oneline 옵션은 깃 로그를 간단히 한줄에 보여줍니다)

HEAD가 새롭게 커밋한 4line DDD 메세지가 있는 master를 가리킵니다.

 

이제 git checkout kim 명령어를 입력하고 git log --oneline로 확인해 봅니다.

브랜치가 kim으로 변경됐다는 메세지고 나오고, HEAD는 kim을 가리킵니다.

 

그리고 git_test.txt 파일을 열어보면 4열에 DDD가 없는 상태임을 확인 할 수 있습니다.

 

다시 마스터로 가고 싶다면 git checkout master 명령어를 입력하면 됩니다.

마스터로 되돌아가면 git_test.txt 파일 또한 4열 "DDD" 문자가 살아납니다.

4열 DDD가 다시 살아남

 

새로만든 branch에서 커밋하기

먼저 git checkout kim 명령어로 kim 브랜치로 스위치 합니다.

 

이제 HEAD가 kim 브랜치를 가리키고 있는 상태에서 git_test.txt 파일 4열에 "kim DDD"를 입력하고 저장합니다. 추가로 git_kim.txt 파일을 만들고 1열에 "kim AAA" 입력 저장합니다.

 

새로만든 git_kim.txt 파일을 스테이지로 올린기 위햐 git add . 명령어를 입력합니다.

git commit -m "4line kim DDD, (kim file)1line kim AAA" 명령어를 입력해서 커밋해 줍니다.

 

그리고 git log --oneline 명령어로 상태를 확인합니다.

HEAD는 새로만든 커밋인 kim을 가리키고 있습니다.

 

마스터 브랜치가 보고 싶다면 옵션을 추가해주면됩니다.

git log --oneline --branches --graph 명령어로 확인합니다.

(--branches 옵션 각 브랜치 커밋을 함께 보여주며, --graph 옵션은 커밋간의 관계를 그래프로 보여줍니다)

 

파란색 동그라미 안에 있는 붉은색 줄기에서 보듯이 HEAD가 가리키는 kim과 master 모두 3번째 커밋에서 만들어졌음을 확인 할 수 있습니다.

 

브랜치와 브랜치 사이의 차이점 확인하기

브랜치와 브랜치간에 차이점을 확인 하는 명령어는 git log 브런치1이름..브런치2이름 입니다.

이 명령어는 브런치1과 브런치2의 같은 커밋 내용은 제외하고 브런치2만 가지고 있는 커밋을 보여줍니다.

 

git log master --oneline 명령어와 git log kim --oneline 명령어를 입력합니다.

둘은 1열부터 3열까지는 같은 커밋을 가지고 있습니다.

 

git log master..kim --oneline 명령어를 입력합니다.

그럼 동일한 커밋인 1~3 커밋은 제외하고 kim에게만 있는 커밋 로그만 보여줍니다.

반대로 git log kim..master --oneline 명령어를 입력하면 master에만 있는 커밋 로그만 보여줍니다.

 

다음 포스팅에서는 나눠진 브랜치를 병합하는 방법에 대해서 포스팅 하겠습니다.

 

[github]깃허브 전체보기

 

'(github)깃허브' 카테고리의 글 목록

전산 관련 경험을 기록 하는 곳

reddb.tistory.com

 

반응형