반응형

(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

 

반응형
반응형

새로운 라즈베리파이 OS 릴리스 2020년 12월 (New Raspberry Pi OS release 2020. 12.)

라즈베리파이 OS 2020년 12월 2nd 릴리즈

라즈베리파이 OS가 새롭게 릴리즈 되었습니다. 새롭게 변화된 내용에 대해서 포스팅하겠습니다.

 

크롬

크로미움 브라우저의 버전이 84로 업데이트 됐습니다. 버전 업그레이드로 브라우저에서 하드웨어 가속이 향상이 예상되며 이에 유튜브 같은 동영상 사이트에서 고품질 비디오 재생이 가능할 것으로 보입니다.

 

또한 Google Meet, Microsoft Teams 및 Zoom과 같은 화상회의에 대해서도 많은 테스트와 조정을 거쳤으며 모두 라즈베리파이의 크로미움에서 원활하게 작동 할 것으로 보입니다.

 

 

PulseAudio

금번 릴리즈된 OS 버전부터 PulseAudio 사운드 서버를 사용할 수 있습니다.

대부분의 리눅스 시스템에서 가장 일반적으로 사용중인 오디오 인터페이스는 고급 Linux 사운드 아키텍쳐인 ALSA입니다. 하지만 이것은 저수준인 오디오 인터페이스입니다. 라즈베리파이 OS가 지금까지는 이것을 사용해 왔습니다. 

 

ALSA에는 여러가지 문제점이 있습니다. HDMI로 유튜브 사운드를 재생할 경우 다른 사운드는 재생할수 없는 문제도 있고, 블루투스 오디오를 처리하지 않아 기타 확장 및 추가 소프트웨어가 필요합니다.

PulseAudio는 이것들을 해결해줍니다. 여러 응용 프로그램의 오디오를 함께 믹싱할수 있기때문에 유튜브를 틀며 동시에 VLC로 동영상 사운드를 출력할 수 있습니다. 블루투스 장치와의 호환성도 좋습니다.

 

이번 릴리즈부터 PulseAudio가 기본적으로 실행되며 작업표시줄의 볼륨 제어 및 오디오 입력/출력 선택화면에서 이전과 변화가 없습니다. 이전 OS와 마찬가지로 출력 및 입력 장치를 선택하고 볼륨만 조정하면 됩니다.

 

입력/출력 선택화면에서 변경사항이 하나 있습니다. Device Profiles... 하단에 있는 메뉴 옵션입니다.

PulseAudio에서 모든 오디오 장치에 하나 이상의 프로필이 있습니다. 여러 연결이 있는 장치에서는 사용할 출력 및 입력을 선택할 수 있습니다.

 

블루투스 장치에서는 주위할 사항이 있습니다. 블루투스 장치에 입력과 출력이 모두 있는 경우(마이크 이어폰 모두있는 헤드셋) 일반적으로 두가지 다른 프로필이 지원됩니다.

하나는 HSP(HeadSet Profile)입니다. 이를 통해 마이크와 이어폰을 모두 사용할 수 있지만 상대적으로 음질이 좋지 않습니다. 휴대 전화처럼 듣고 말하기에는 좋겠지만 음악을 듣기에는 적합하지 않습니다.

다른 하나는 A2DP(Advanced Audio Distribution Profile)입니다. 이는 훨씬 좋은 음질을 제공하지만 출력 전용이라 마이크를 사용할 수 없습니다. 

블루투스 장치를 기본 입력으로 선택하면 장치가 자동으로 HSP로 전환됩니다. 마이크를 사용할 경우는 HSP로 선택하시고, 음악을 듣는 경우는 A2DP를 사용하시기 바랍니다.

(라즈베리파이의 내부 사운드를 출력만 사용한다면 프로필은 하나만 있고 자동으로 선택됩니다)

 

 

프린트

프린터에 연결하고 구성하는 쉬운 방법이 기본적으로 추가되었습니다.

CUPS와 system-config-printer가 기본적으로 설치되도록 변경되었습니다.

http://localhost:631로 접속을 하면 CUPS 웹 인터페이스에 접속할 수 있습니다.

 

또는 기본메뉴에서 기본설정 부분으로 이동하여 인쇄설정을 여는 방법도 있습니다.

 

프린터 제거, 기본프린터 설정, 프린터의 인쇄디기열에 액세스 할 수 있는 system-config-printer 대화상자가 열립니다.

 

새로운 하드웨어 옵션 추가

라즈베리파이 구성 도구에 몇가지 옵션이 추가되었습니다.

시스템 탭에서 단일 상태 LED의 전원이 켜져 있음을 표시할지 여부를 선택할 수 있습니다. (라즈베리파이 제로, 400 제품)

 

성능(Performance) 탭에서는 라즈베리 파이 케이스 팬을 제어 할수 있는 옵션도 추가되었습니다.

연결된 GPIO 핀을 선택 후 켜고 끄는 온도를 설정할 수 있게 되었습니다.

 

업그레이드 방법

이번에 릴리즈된 라즈베리파이 OS 이미지를 다운받아 새롭게 설치하는 방법이 있습니다.

이는 자료의 백업양이 적거나 새로 설치가 부담스럽지 않은 사용자에게 추천드립니다.

www.raspberrypi.org/software/operating-systems/#raspberry-pi-os-32-bit

 

Operating system images – Raspberry Pi

The Raspberry Pi is a tiny and affordable computer that you can use to learn programming through fun, practical projects. Join the global Raspberry Pi community.

www.raspberrypi.org

 

다른 방법은 기존이미지에 아래와 같은 명령을 터미널에서 입력하여 업그레이드 하는 방법이 있습니다.

sudo apt update
sudo apt full-upgrade

 

위 full-upgrade가 완료되면 bluealsa를 제거하고, PulseAudio-module-Bluetooth을 설치합니다.

(apt remove는 설정파일은 남기고 패키지삭제, apt purge는 설정파일과 함께 패키지 삭제)

sudo apt purge bluealsa
sudo apt install pulseaudio-module-bluetooth

 

이후 재부팅을 합니다.

sudo init 6

 

이후 재부팅이되면 라즈베리파이 처음 세팅 화면이 나오는데 넥스트를 계속하면 됩니다.

 

주의사항

일부 사용자의 경우 응용프로그램이 PulseAudio 출력에 문제를 발생시킨다는 보고가 있다고 합니다.

이건 아마도 이전 ALSA 구성 파일이 계속해서 시스템에 있기 때문에 발생하는 것으로 생각됩니다.

터미널 창에서 아래 명령어를 실행하여 ALSA 구성파일을 삭제하고, PulseAudio에서 작동하지 않는 이전 오디오 기본설정 응용프로그램 패키지도 제거해보시기 바랍니다.

rm ~/.asoundrc
sudo apt purge pimixer

 

PulseAudio로 전환 한 이후 라즈베리파이의 내부 오디어 장치 출력이 모노로 되는 문제도 보고됐습니다. 차후 업데이트를 통해 수정할 것이라고 합니다.

 

라즈베리파이 전체보기

 

'라즈베리파이' 카테고리의 글 목록

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

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

 

반응형
반응형

(github)깃허브 - 깃(git) 사용법2 깃 작업 되돌리기

 

이전 포스팅에서는 깃의 시작과 버전을 만드는 방법에 대해서 설명했습니다.이번 포스팅에서는 깃 하는 작업을 되돌리는 방법에 대해서 포스팅하겠습니다.

 

수정한 파일 되돌리기 git restore <파일명>

현재 폴더 상태와 git status 상태입니다.

git_test.txt와 git_test2.txt 파일이 커밋까지 완료된 상태입니다.

 

이제 git_test.txt파일을 열고 3열에 "CCC"를 지우고 "DDD"를 입력하고 저장합니다.

CCC 값을 삭제
DDD 값을 입력 저장

 

git status를 다시 입력합니다. 파일이 수정되었고, 커밋을 위한 스테이지에 올라가 있지 않은 상태임을 알려줍니다.

또한 git restore <파일명> 명령어를 입력하면 작업폴더 안에서의 변화를 취소(복구) 한다는 안내도 출력됩니다. (git 구버전에서는 git checkout으로 나올것 입니다. 최신버전에서는 git restore 입니다)

 

git restore git_test.txt 명령어를 입력하고 git status를 입력합니다.

git_test.txt의 파일은 최종커밋한 파일로 복원이 되고, 작업트리는 깨끗한 상태입니다.

 

이제 폴더에서 git_test.txt 파일을 실행하여 원복이 됐는지 확인을 합니다.

"DDD"로 수정했던 3열이 "CCC"로 다시 원복된 것을 확인 할 수 있습니다.

 

스테이지에 올라간 파일 되돌리기 git restore --staged <파일명>

위에서는 파일의 수정 상태를 원복했습니다.이번에는 스테이지 올라간 파일을 취소하는 방법입니다.이번에도 git_test.txt  파일을 열고 3열에 "CCC"를 "DDD"로 수정 및 저장합니다.

DDD 값을 입력 저장

 

git status 명령어 입력 후, git add git_test.txt 입력 후, git status 명령어를 다시 입력해 봅니다.

첫 git status에서는 파일이 수정된 것이 출력됩니다. git add 이후에 git status에서는 커밋을 위한 준비가 됐음을 출력합니다.(스테이지에 올라간 상태)

또한 git restore --staged <파일명> 으로 스테이지에서 내려오는 방법 또한 출력합니다.

(이전 버전에서는 git reset HEAD <파일명> 이었습니다)

 

git restore --staged git_test.txt 명령어를 입력합니다. 그리고 git status 명령어를 입력해서 unstage가 된 상태를 확인합니다.

 

최신 커밋삭제하며 이전으로 되돌리기  git reset HEAD^^

이번에는 커밋까지 이뤄진 최신 커밋을 취소하는 방법입니다.

현제 폴더에 있는 git_test.txt 파일의 3열은 "DDD"인 상태이고 스테이징도, 커밋도 안된 상태입니다.

(지금 현재 최종 커밋되어있는 깃의 git_test.txt 파일 3열은 "CCC" 입니다.)

 

이제 "DDD"로 변경한 내용을 add 및 commit 해줍니다.

두명령어를 한번에 해주는 명령어인 git commit -am "메세지내용" 을 입력합니다.

그리고 git status를 입력해서 깨끗한 작업트리 상태를 확인합니다.

 

git log를 입력해서 최종버전에 HEAD가 있는것을 확인합니다.

 

이제 git reset HEAD^^ 명령어를 입력합니다.

(원래 명령어는 git reset HEAD^ 꺽쇠가 한개이지만 cmd는 꺾쇠를 이스케이프 문자로 인식하여 두개를 입력함)

커밋이 취소되고, 언스테이지 되었다는 내용이 출력됩니다.

 

git log를 입력해보면 최신 커밋 버전의 log가 사라지고 이전 버전에 HEAD가 있는것이 확인됩니다.

 

git status를 입력하면 파일만 수정된 상태고 스테이지에도 올라가지 않은 상태임을 확인 할 수 있습니다.

 

이제 위에서 설명드렸던 git restore git_test.txt 명령어를 파일 원복을 실행 시키고 git status로 작업트리의 깨끗한 상태를 확인합니다.

 

이제 폴더의 git_test.txt 파일을 열어보면 3열이 "CCC"로 원복된것을 확인할 수 있습니다.

 

커밋을 되돌리는 여러가지 방법

※ 윈도우 cmd에서는 꺽쇠를 두번 ^^ 입력해줘야 합니다

최근 n개의 커밋을 취소하는 명령어 

$ git reset HEAD~n

 

최근 커밋을 하기 전 상태로 작업 트리를 되돌리는 명령어

$ git reset --soft HEAD^

 

최근 커밋과 스테이징을 하기 전 상태로 작업 트리를 되돌리는 명령어 (옵션 없이 사용할 경우와 같음)

$ git reset --mixed HEAD^
$ git reset HEAD^

 

최근 커밋과 스테이징을, 파일 수정까지 모두 전 상태로  작업 트리를 되돌리는 명령어 (파일이 이전 커밋으로 원복되며 복구 불가능)

$ git reset --hard HEAD^

 

특정 커밋으로 돌아가기

$ git log (commit 뒤에 커밋해시값을 얻기 위한 명령어)
$ git reset --hard <되돌아가고 싶은 커밋해시값>

 

최신버전 커밋 삭제 하지 않고 이전버전으로 되돌아가기 git revert

위에서 설명한 git reset과는 다르게 git revert 명령어는 최신버전의 커밋 내용을 삭제하지 않고 이전으로 버전으로 되돌아갈 수 있습니다.

 

먼저 git_test.txt 파일의 3열을 다시 "DDD"로 수정하고 저장합니다.

DDD 값을 입력 저장

 

git commit -am "메세지내용" 명령어를 입력하여 커밋을 하고 git log로 로그를 확인합니다.

 

위 사진에서 주황글씨로 commit 뒤에 나오는 값이 커밋해시 값 입니다.

git revert <HEAD가 있는 커밋해시값> 을 명령어로 입력합니다.

(git reset은 돌아가고 싶은 커밋해시값을 적지만, git revert는 취소할 커밋해시값을 입력)

 

vim이 열리고 리버트가 되기전에 추가로 남겨둘 메세지를 입력 할 수 있습니다. (i키 누르면 입력모드로 전환)

(vim 저장하고닫기: esc -> :wq)

 

이제 git log를 입력해 봅니다. 

그러면 로그에는 최신버전에서 revert한 새로운 커밋이 생성됩니다.

기존의 최신이었던 버전(DDD로 또 수정) 커밋도 여전히 존해합니다.

이는 최신버전의 커밋을 지우는 것이 아닌, 최신버전의 커밋을 취소한 새커밋을 만든 것 입니다.

 

이제 폴더에서 git_test.txt 파일을 열어봅니다.

그러면 3열의 "DDD"가 "CCC"로 복원된 것을 확인 할 수 있습니다.

 

[github]깃허브 전체보기

 

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

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

reddb.tistory.com

 

반응형
반응형

(github)깃허브 -  깃(git) 사용법1 깃으로 버전 만들기

 

이전 포스팅에서는 깃(git)을 설치하는 방법 및 name과 email 설정에 대해 포스팅하였습니다.

이번 포스팅에서는 깃(git)의 사용법에 대해서 포스팅하겠습니다.

 

먼저 저는 C:\Users\do\git_test 폴더를 만들어주었습니다. 이 폴더에서 git을 테스트 할 것입니다.

 

git init

명령 프롬프트(cmd)로 해당 폴더에 들어가서 git init 명령어를 입력합니다.

 

윈도우 탐색기로 확인해 보면 .git 이라는 숨겨진 폴더가 생깁니다. 이 폴더에 깃이 시작된 것 입니다.

 

git status

cmd에서 git status를 입력하면 깃의 상태를 출력해줍니다.

  • On branch master: 현재 마스터 브랜치가 존재
  • No commits yet: 아직 커밋한 파일 없음
  • nothing to commit: 현재 커밋할 파일 없음

 

해당 폴더에 git_test.txt 텍스트 파일을 하나 만들어주고 1열에 AAA 내용을 입력 및 저장해줍니다.

git_test.txt "AAA" 입력

 

다시 cmd에서 git status를 입력하면 Untracked files 라는 변화된 내용이 출력됩니다.

깃에서 버전관리를 하지 않은 파일들을 Untracked files라고 합니다.

 

git add

이제 cmd창에서 git add git_test.txt 명령어를 입력하면 git_test.txt파일이 스테이지로 올라갑니다.

(스테이지는 생성 또는 수정한 파일을 올리는 곳입니다. 이곳에 올린 파일들이 후에 저장소로 커밋됩니다.)

이후 다시 git status를 입력하면 Changes to be committed 라는 변화된 내용이 출력됩니다.

git_test.txt 파일 앞에 new file이라는 변화된 내용도 출력됩니다.

이는 앞으로 git_test.txt 파일을 커밋할 준비가 되었다는 상태입니다.(스테이지에 올라간 상태)

 

git commit

이제 스테이지에 올라온 파일을 커밋해줍니다.

git commit -m "넣고 싶은 메세지" 명령어를 입력합니다. (-m 옵션은 커밋과 함께 메세지를 입력할 수 있게 해줍니다)

명령어를 입력하면 1개의 파일이 변경되었고, 파일에 1개의 내용이 추가되었다고 출력됩니다.

다시 git status를 입력하면 커밋할 것이 없고, 작업트리도 깨끗하다고 출력됩니다.

 

git log 명령어를 입력하면 커밋한 버전이을 확인 할 수 있습니다.

 

위에서 설명한 스테이지에 올리는 git add와 git commit을 동시에 하는 방법도 존재합니다.

먼저 git_test.txt 파일 2열에 "BBB"를 입력하고 저장합니다.

 

그다음 cmd에서 git status를 입력하면 아래와 같이 스테이지에 올라가지 않았으며 git_test.txt가 수정되었다는 내용이 출력됩니다.

 

cmd에서 git commit -am "넣고싶은 메세지" 명령어를 입력하면 git add와 git commit이 동시에 됩니다.(-a는 스테이지 올리는 add옵션, m은 뒤에 메세지를 넣을 수 있게 해주는 옵션)1개의 파일이 변경되었고, 2개의 내용일 추가되었고, 1개가 삭제되었다는 내용이 출력됩니다.git status를 입력하면 커밋할게 없고, 작업트리도 깨끗하다고 나옵니다.

 

git log

git log 명령어를 입력해보면 최근에 커밋한 내용이 HEAD -> master로 설정되어 있음을 확인할 수 있습니다.

commit 뒤에 나오는 값은 커밋 해시값(또는 git hash)입니다.

Author: 뒤에는 작성자의 이름과 이메일이 나옵니다.

Date: 뒤에는 버전을 만든 날짜가 나옵니다.

그 밑에는 커밋할때 -m 옵션으로 넣어준 "메세지" 내용이 출력됩니다.

 

git diff

git_test.txt 파일 3열에 "CCC"를 입력해 줍니다.

 

git status를 입력해 보면 파일이 수정되었고 스테이지로 올라가지 않았다는 내용이 출력됩니다.

 

이 상태에서 git diff를 입력하면 커밋되어 있는 최신버전의 git_test.txt 파일과 수정한 git_test.txt 파일의 차이점을 보여줍니다.

붉은색 -BBB의 의미는 BBB가 삭제되었다는 의미입니다.

녹색의 +BBB +CCC의 의미는 BBB, CCC가 추가되었다는 의미입니다.

 

여러파일 git add

폴더에 git_test2.txt파일을 만들고 "111, 222, 333, 444"를 입력해줍니다.

 

git status를 입력해서 상태를 확인합니다.

git_test.txt는 파일이 수정되었고 스테이지에 올라가지 않았다고 출력됩니다.

git_test2.txt는 파일이 Untracked 상태임을 출력합니다.(버전관리를 하지 않는 파일이라는 의미)

 

이제 2파일을 git add 하여 스테이지로 올려줍니다. 방법은 두가지가 있습니다.

1. 하나씩 추가하는 방법

$ git add git_test.txt
$ git add git_test2.txt

2. 모든파일을 add 하는방법 ( .은 모든파일을 의미)

$ git add .

그리고 git status로 상태를 확인합니다. 2개 파일 모두 커밋할 상태로 변화되어 있습니다.

 

이제 git commit -m "메세지내용" 명령어 입력을 합니다.

2개의 파일이 변경되었고, 6개의 삽입, 1개의 삭제가 있음을 출력합니다.

 

git log --stat 명령어로 상태를 확인합니다.

--stat 옵션을 주면 버전의 커밋 관련 파일 내용도 함께 출력됩니다.

 

여러 파일을 git add 할때 제외하고 싶은 파일 목록만들기

git init으로 깃을 시작한 폴더내에서 git으로 버전관리하고 싶지 않은 파일들이 있을 수 있습니다.

그런 경우 git init을 시작한 최상의 폴더에 .gitignore 파일을 만들어 목록을 입력해주면 됩니다.

git_test3.txt 파일이 없는 상태에서 .gitignore 파일을 만들어 "git_test3.txt"를 입력해주고 저장합니다.

 

git status를 입력하면 .gitignore 파일이 생성되었고 스테이지에 올려야 하는 Untracked 상태임을 출력해줍니다.

(.gitignore 파일안에 지정한 파일은 버전관리에 포함되지 않지만 .gitignore 파일은 버전관리에 포함됩니다)

 

폴더에 git_test3.txt 파일을 만들고 "가가가"를 입력합니다.

 

git status를 입력해보면 .gitignore 파일에 입력되어 있는 git_test3.txt는 검색이 되지 않는 것을 확인할 수 있습니다.

 

이제 .gitignore 파일에서 git_test3.txt 내용을 삭제하고 저장합니다.

 

git status를 다시 입력해 봅니다. git_test3.txt 파일도 Untracked 파일로 나타나는 것을 확인 할 수 있습니다.

.gitignore에는 파일명뿐 아니라 폴더, 확장자등으로도 버전관리에서 제외를 할 수 있습니다.

  • 파일명.확장자    (1개의 파일 제외)
  • 폴더명/    (해당 폴더명 폴더 제외)
  • .확장자    (해당 확장자 모두 제외)

 

최근 커밋 메세지 수정하기

git log를 입력해서 최신 버전의 커밋 메세지를 확인합니다.

 

git commit --amend 명령어를 입력하면 vim이 열리면서 최근 버전의 메세지를 수정할 수 있습니다.

(vim 사용법은 a를 누르면 뒤에 내용을 입력할 수 있습니다.)

저는 마지막에 "메세지 수정"을 추가 입력하고 vim을 저장종료 하겠습니다. (vim저장종료 명령어 esc -> :wq)

 

이후 git log를 입력하면 메세지가 수정된 것을 확인 할 수 있습니다.

 

다음 포시팅에서는 깃으로 하는 작업을 뒤로 되돌리는 명령어에 대해 포스팅하겠습니다.

그전에 불피요한 .gitignore파일과 git_test3.txt 파일은 삭제하도록 하겠습니다.

 

[github]깃허브 전체보기

 

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

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

reddb.tistory.com

 

반응형