목록
1. 터미널
커맨드 학습
2. 공부 준비
Git 설치하기vscode 설치하기
3. Git의 시작
Git으로 관리되는 모습
Git으로 관리 시작
Git으로 이전 버전으로 되돌리기
4. Github 시작
Github 가입
저장소 만들기
local 저장소 와 remote 저장소 연결
Readme.md 만들기
git pull
git clone
5. Branch의 이해
branch 개념
branch 생성
merge confilct
git merge
fast-forward
Pull request의 개념
1. 터미널
- 커맨드 학습
[mac]
`cmd`+`space` 를 누르고 spotlight라는 검색창에 'terminal'을 입력합니다.
[Windows]
윈도우 검색창에 powershell을 검색하고 실행합니다.
****자신의 위치를 파악하기 위해 아래 코드를 입력해보세요****
****mac의 경우는 코드 3째줄을 입력하고, Windows는 코드 4째줄을 입력하세요****
pwd
Get-Location
****자신이 어떤 폴더에 들어와 있는지 알 수 있습니다****
****해당 폴더에는 어떤 요소들이 있는지 알기 위해서는 아래 코드를 입력해보세요****
****mac의 경우는 코드 10째줄을 입력하고, Windows는 코드 11째줄을 입력하세요****
ls
dir
****나오는 파일명들은 본인이 위치한 폴더 속 요소들입니다****
****해당 폴더로 이동하기 위해서는 현재 리스트 속 요소의 이름을 그대로 작성합니다****
cd desktop
****cd(공백)(자신이 가려는 경로) 와 같은 방식으로 커맨드를 사용합니다****
****만약 잘못 들어왔거나 이전 경로로 돌아가야 한다면 아래 코드를 입력합니다****
cd ..
****항상 공백과 순서에 유의하세요****
****지금까지는 상대경로를 통해 하나의 길을 따라 움직였습니다****
****이제는 한번에 절대경로를 통해 이동해보겠습니다****
cd /users/유저명/desktop
****절대경로는 앞에 (' / ')슬래시를 붙이면 됩니다****
****이제 폴더를 만들기 위해 아래 코드를 입력해보세요****
mkdir 폴더명
****이후 폴더가 현재 경로에 생성된 것을 알 수 있습니다****
****본인이 있는 경로가 바탕화면이라면 바탕화면에 설정된 이름으로 폴더가 생성되었습니다****
****복사, 이동, 삭제를 위해 아래의 코드를 입력할 수 있습니다****
cp 폴더명
mv 폴더명 이동경로
rm 폴더명
****항상 공백과 오타에 유의하세요****
2. 공부 준비
- Git 과 vscode 설치
- Git 설치하기
[mac]
**********************이 줄은 입력이 아닙니다. 순서대로 아래코드를 입력하세요*******************
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
**********************이 줄은 입력이 아닙니다. 순서대로 아래코드를 입력하세요*******************
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/본인의 유저명을 입력하세요/.zprofile
**********************이 줄은 입력이 아닙니다. 순서대로 아래코드를 입력하세요*******************
eval "$(/opt/homebrew/bin/brew shellenv)"
**********************이 줄은 입력이 아닙니다. 순서대로 아래코드를 입력하세요*******************
brew install git
터미널을 종료하고 다시 실행하세요.
[Windows]
https://git-scm.com/download/win
사이트에 접속해서 영문으로 된 'click here to download' 버튼을 누르세요.
이후 실행되는 설치프로그램에서 기본설정 그대로 설치를 진행하면됩니다.
'Launch Git Bash'에 체크된 상태로 'Finish' 버튼을 누르면 됩니다.
- vscode 설치하기
[Mac]
(*-*-*-앱스토어에서도 설치할 수 있습니다.-*-*-*)
[공통]
https://code.visualstudio.com/
사이트에 접속해서 'Download Mac Universal'이라는 버튼을 클릭해서 설치합니다.
3. Git의 시작
- Git으로 버전 관리 시작
- Git으로 관리되는 모습
- Git으로 관리 시작
vscode를 실행합니다.
vscode 속에서 터미널을 실행하기 위해서
[Mac]에서는 'ctrl'+'shift'+'~'을 누릅니다.
[WIndows]에서는 'ctrl'+'~'을 누릅니다.
-------깃으로 버전관리를 시작합니다----------
-------프로젝트를 수행할 땐 딱 한번만 작성합니다--------
git init
--------
-------새로 만든 폴더에 파일을 새로 생성합니다-----------
------깃으로 관리할 파일을 지정할 수 있습니다----------
git add 파일명
--------혹은 깃으로 모든 파일을 관리하도록 할 수 있습니다-------------
git add .
---------앞으로 이 데스크탑 혹은 노트북에서 사용할 깃 유저명을 등록합니다-------------
---------이 명령어는 앞으로 이 하드웨어에서 단 한번만 사용해도 됩니다-------------
---------가능한 유저명은 영문으로 작성해야 이후 오류를 피할 수 있습니다--------------
git config --global user.email "유저이메일"
git config --global user.name "유저명"
---------깃으로 커밋합니다-------------
---------우선 다음과 같은 형식으로 커밋할 수 있습니다-----------------
----------커밋타입: 동작 기능이름/함수이름----------------
git commit -m"커밋 메시지 작성"
-------------최근 커밋한 메세지를 바로 수정할 수 있습니다---------------
git commit --amend -m"수정한 커밋메세지 입력"
------------커밋이 잘 되었는지 기록을 볼 수 있습니다----------------
git log
--------파일이 잘 관리되고 있는지 확인을 해봅니다---------------
git staus
-------잘 tracked가 되었다면 Changes to be committed라는 항목을 파악할 수 있습니다-------
-------만약 git에서 관리되지 못하는 파일이 있다면 Untracked라는 항목을 볼 수 있습니다------
--------이미 관리하기로한 파일을 취소 할 수 있습니다-----------
git reset 파일명
위의 코드와 같은 흐름으로 깃으로 버전을 관리할 수 있습니다.
git init은 파일을 관리하는 기록의 저장소를 만드는 코드입니다.
그래서 새로 만든 폴더 속을 살펴 보면
숨김폴더로 ' .git ' 이라는 폴더가 생성되어 있는 것을 확인할 수 있습니다.
(*-*-*-*-*-*-*-커밋 시 주의사항-*-*-*-*-*-*--*)
커밋을 할때는 저장을 누르는 순서도 중요합니다.
일련의 과정을 나열하자면,
git init -> 파일생성 -> git add . -> 파일 속 내용작성 -> 저장 -> 커밋
위와 같은 순서로 진행해야 앞으로 오류를 피할 수 있습니다.
- Git으로 이전 버전으로 되돌리기
깃의 주기능은 버전을 관리하는 것입니다.
따라서 버전의 되돌리는 기능을 통해 파일을 관리하는 방법을 알아보겠습니다.
---------------git log를 통해 커밋 내용을 파악할 수 있습니다------------
---파일을 수정하고 저장하고 싶은 분기마다 커밋하면 추가되는 기능마다 커밋 로그가 생성됩니다---
git log
---------git log를 살펴 보면 노란 색으로 표시되는 'commit ~~~~' 부분이 커밋 이름입니다--------
---------이제 이 커밋 이름을 이용해서 이전 버전으로 돌릴 수 있습니다------------
---------커밋의 이름은 commit 공백 이후에 나오는 6글자 입니다---------------
---------revert는 되돌리고 싶은 커밋을 선택하는 기능입니다--------------
---------또한, 되돌릴 커밋을 지우지 않고 새로운 수정 사항으로 커밋을 생성합니다--------------
---------즉, 수정하고 싶은 내용의 커밋을 골라 새롭게 커밋하여 저장할 수 있습니다-------------
---------그렇기 때문에 이전 커밋은 지워지지 않고 남고, 새로운 커밋도 생성됩니다--------------
git revert 커밋명
----------이후에 새로운 커밋명을 저장해 달라고 vim 텍스트 편집기가 떠오릅니다----------------
----------원하는 커밋명을 입력하거나 그대로 닫을 수 있습니다----------------
-----------esc키를 누릅니다-------------------
i (커서가 있는 부분부터) 파일 내부의 내용을 작성, 수정할 수 있습니다
dd (커서가 있는 부분의) 행을 삭제합니다
:wq 파일을 저장하고 vim을 종료합니다
:q 파일을 저장하지 않고 에디터를 종료합니다
--------reset은 되돌아 가고 싶은 커밋을 선택하는 기능입니다----------------
--------수정사항을 단순히 커밋하기 전 상태로 두는 것입니다--------------------
---------soft는 커밋 내용을 없애고 현재 있는 파일내용을 수정시키지는 않습니다----------
git reset -soft 커밋명
-------hard는 커밋 내용을 없애면서 현재 있는 파일내용도 커밋명대로 수정시킵니다--------
git reset -hard 커밋명
얼핏 보면 hard가 깔끔한 것처럼 보이지만
실제 현업에서는 커밋기록이 중요하기 때문에
목적에 맞게 reset을 사용합니다.
따라서 reset보다는 커밋 기록을 남길 수 있는 revert를 주로 사용합니다.
4. Github 시작
- Github repo
- Github 가입
이전에 파일을 저장하며 수행한 것은 local 저장소에서 이루어졌다면
이제 github는 remote 저장소라고 생각하면 좋습니다.
사이트에 접속해서 가입을 진행합니다.
- 저장소 만들기
가입을 완료 한 후 홈페이지를 들어가면
위 그림과 같은 버튼이 보입니다.
이미 github를 사용해서 저장소를 이미 만들어보셨다면,
오른쪽 상단에서 찾을 수 있습니다.
버튼을 찾아서 누르면 다음과 같은 페이지로 넘어갑니다.
위 사진처럼 원하는 저장소 이름을 정하고
'Create repository' 버튼을 눌러 저장소를 생성해줍니다.
위 사진 처럼 나타난다면 저장소를 성공적으로 생성한 것입니다.
그리고 우리는 파란 박스 속에 있는 주소를 복사하겠습니다.
- local 저장소 와 remote 저장소 연결
이제 다시 vscode에서 터미널창을 열어보겠습니다.
----------이제 깃으로 저장했던 local repo와 깃허브의 remote repo를 연결하겠습니다-----------
----------이전에 복사한 주소를 붙여넣으면 됩니다-----------------
git remote add origin 주소
---만약 이전에 git의 이메일을 github 가입 이메일과 다르게 입력했다면 아래 코드를 입력하세요---
git config --global user.email 깃허브가입한 이메일
-------------이제 remote repo 즉 깃허브의 원격 저장소로 기록들을 올려보겠습니다-----------
-------------이전 git을 사용하시는 분들은 master라는 이름으로 브랜치라는 것이 생성됩니다---------
-------------최신 git을 사용하시는 분들은 main이라는 이름으로 브랜치가 생성됩니다----------
-------------vscode 왼쪽 하단에서 브랜치명을 확인 할 수 있습니다------------------
-------------브랜치에 대한 것은 차후 설명하겠습니다---------------------
git push origin 브랜치명
오류가 발생하지 않았다면 깃허브에 성공적으로 push가 된 것입니다.
그리고 다시 생성한 깃허브 페이지로 돌아가면 커밋했던 파일들이 올라간 것을 확인할 수 있습니다.
-main 이라는 브랜치 명을 사용하게 된 것은 2020년에 있었던 Black lives matter 운동의 일환입니다.-
-----기존의 사용하던 master/slave가 정화가 필요하다는 의식에서 발단했습니다------
----앞으로 git init을 사용했을 때 main이라는 이름이 기본 branch로 만들어주도록 설정하겠습니다---
git config --global init.defaultBranch main
------만약 기존 브랜치 이름을 바꾸고 싶다면 아래 코드를 사용하세요------
git branch -m main
- Readme.md 만들기
위 사진을을 보면 파란 박스 속에 'Add a README'라는 버튼이 있는 것을 볼 수 있다.
Readme는 깃허브에서 자기소개를 하는 파일이라고 생각하면 편합니다.
즉 이 프로젝트가 어떤 것인지
혹은 이 깃헙 저장소를 방문하는 사람들에게 읽게 하고 싶은 내용을 적습니다.
이제 `Reademe.md`라는 파일을 생성하겠습니다.
파일명은 앞글자는 대문자로 적어야 합니다.
이렇게 생성이 되었다면 원하는 내용을 적습니다.
Readme.md에서 md는 markdown 파일형식이라는 뜻 입니다.
따라서 마크 다운 문법을 사용해서 문서를 작성하면 됩니다.
그리고 이전과 마찬가지로 push 하여 깃헙에 올리면 됩니다.
이제 다시 깃헙 페이지로 돌아가 보면 다음과 같은 화면을 볼 수 있습니다.
- git pull
실제로 개발을 하다보면 많은 사람들과 개발을 진행하게 됩니다.
따라서 내가 push를 한 데이터뿐만이 아닌 다른 사람이 push를 할 수도 있습니다.
현재 올라온 최신 데이터를 다시 받아서 작업을 이어가야 합니다.
간단하게 다른 사람이 수정한 것처럼 만들기 위해
위 사진 처럼 연필 버튼을 눌러 수정하겠습니다.
원하는 대로 수정을 하고 커밋 체인지 버튼을 누르겠습니다.
이런 창이 나오면 그대로 'Commit changes' 버튼을 누르겠습니다.
성공적으로 수정되면 다음과 같은 화면이 됩니다.
그리고 다시 vscode로 돌아가면 여전히
이 화면이 유지되어 있습니다.
하지만 우리의 현재 최신버전은 이 파일이 아니기 때문에
최신버전으로 갱신하겠습니다.
git pull origin main
위 코드를 입력하고 오류가 없다면 pull을 성공적으로 한 것입니다.
이제 vscode에서는 다음과 같이 파일이 변경되어 있습니다.
이제 우리는 다른 팀원들과 협업할 준비가 되어가고 있습니다.
- git clone
만약 우리가 새로운 환경에서 개발을 다시 이어가야 한다면,
혹은 새로운 팀원이 들어와 개발을 시작해야 한다면,
전에 만들던 파일이 없기 때문에 pull을 할수가 없습니다.
따라서 우리는 git clone을 사용해서 새로운 환경에서 개발을 이어갈 수 있습니다.
중요한 것은 git clone은 이미 git으로 관리하기로 정한 파일이기 때문에
git init이 필요없다는 것입니다.
이제 우리는 새로운 개발환경에서 개발을 한다고 생각하고 이미 만들어 놓은 폴더를 지우겠습니다.
그리고 새로운 폴더를 만들고 vscode로 열어 주세요.
git clone 주소
이전에 우리의 저장소의 주소를 입력합니다.
그렇게 간단히 저장소에서 파일이 복제되었습니다.
(*-*-*-*-*-* 여기서 가장 중요한 부분-*-*-*-*-*-*)
만약 깃으로 관리되고 있는 폴더 속에 clone을 할 경우 오류가 발생합니다.
반드시 새로운 폴더를 만들어서 그 속에 clone을 진행해주세요.
-------------어떤 수정사항이 있는지 확인할 수 있습니다------------
-----remote 저장소에 있는 브랜치와 local 저장소 브랜치를 바로 합쳐버리지 않습니다------
-----그래서 따로 분리된 remote 장소 브랜치에서 수정사항을 확인할 수 있습니다-------
-----------pull과 fetch는 바로 일치시켜버리는지 아닌지의 차이가 있습니다-------------
git fetch
---------깃 허브 상에 어떤 브랜치가 있는지 확인할 수 있습니다-----------
git branch -r
--------이제 수정사항을 확인하겠습니다----------
git diff main origin/main
------------파일을 합치겠습니다----------
git merge origin/main
5. Branch의 이해
- branch 개요
- branch 개념
브랜치란 사전적 의미대로 가지입니다.
하나의 메인 저장소에서 가지를 뻗어가 새로운 저장소를 만든 것입니다.
따라서 각 브랜치는 목적에 따라 생성됩니다.
위의 그림처럼 개발용 브랜치를 만들고
기능을 추가했다면 다시 메인 브랜치에 merge(병합) 시킬 수도 있습니다.
- branch 생성
--------새 브랜치를 만들어보겠습니다----------
--------아래 코드는 브랜치를 만들고 바로 전환합니다----------
git switch -c develop
-------브랜치가 어떤 것이 있는지 확인할 수 있습니다----------
git branch --list
---------원하는 브랜치로 바꿀 수 있습니다-----------
---------메인 브랜치로 다시 돌아올 수 있습니다--------
git switch main
따라서 develop 브랜치에서 개발을 진행하고
열심히 커밋을 하고
다시 메인브랜치로 돌아오면 원래 파일로 돌아옵니다.
즉 각 개발과정은 각 브랜치에 남게 되는 것입니다.
만약 브랜치를 제거하고 싶다면 아래 코드를 입력하면 됩니다.
git branch -D develop
- git merge
merge는 말그대로 합치는 것을 의미합니다.
각 브랜치에서 개발을 진행하고 브랜치를 합치기 위해서는 merge를 사용하게 됩니다.
새롭게 파일을 작성합니다.
develop 브랜치를 만듭니다.
그리고 추가로 다음과 같이 작성을 합니다.
커밋까지 완료합니다.
메인 브랜치로 돌아오면 방금 작성했던 글들이 사라집니다.
다시 메인 브랜치로 돌아와서 추가로 작성합니다.
커밋까지 완료합니다.
이제 메인 브랜치에서 디벨롭 브랜치를 merge 할 수 있습니다.
git merge develop
성공적으로 merge를 했습니다.
이제 커밋 기록이 어떤 식으로 이루어져 있는지 확인해 볼 수 있습니다.
git log --graph --decorate --oneline
위와 같은 그림으로 병합이 완료된 것을 그림으로 볼 수 있습니다.
저는 스크린샷을 찍으면서 오류가 나서 다시 만들어서 조금 다른 모양일 수 있습니다만,
merge라는 큰 골자를 이해하고 넘어가면 되겠습니다.
- merge confilct
만약 파일의 내용이 서로 다른 내용을 포함하고 있다면 충돌이 일어나게 됩니다.
따라서 충돌내용을 수정하거나 처음부터 예방을 해야 합니다.
rm -rf .git
위의 코드를 사용해 깃의 기록을 삭제합니다.
gitbash가 아닌 powershell에서는 다음 코드를 사용합니다.
rmdir /s /q .git
그리고 다시 내용을 작성합니다.
그리고 다시 깃을 불러와서 폴더를 관리하게 합니다.
git init
git add .
git commit -m"Feat: Add index.txt"
디벨롭 브랜치를 만들어 봅니다.
git switch -c develop
생성된 디벨롭 브랜치에서 위와 같은 내용으로 수정하고
커밋까지 완료합니다.
다시 메인 브랜치로 돌아와서
다음과 같이 작성 한 후 커밋까지 완료 합니다.
그리고 머지를 실행합니다.
그럼 위와 같은 화면으로 conflict(충돌)이 발생합니다.
만약 Accept Current Change를 선택하면 ' 2 ' 가 원래 자리를 차지하게 됩니다.
Accept Incoming Change를 선택하면 '1+2'가 원래 자리를 차지하게 됩니다.
Accept Both Changes 를 선택하면 두 값을 모두 받아들이게 됩니다.
Accept Both Changes 를 선택한 결과 입니다.
위와 같은 방법으로 충돌을 다룰 수 있습니다.
- fast-forward
메인 브랜치는 수정하지 않은채로
새로운 브랜치를 생성하고
그 브랜치에서 개발을 진행합니다.
그리고 메인 브랜치에서 개발 브랜치를 병합할 때 사용하는 방식입니다.
즉, 기존 브랜치보다 다른 브랜치의 커밋이 앞설때 사용할 수 있습니다.
다시 깃을 기록들을 삭제하고 다음과 같이 준비합니다.
그리고 커밋을 완료하고,
새롭게 develop 브랜치를 만듭니다.
다음과 같이 내용을 수정합니다.
그리고 커밋을 완료하고 메인을 돌아와 봅니다.
메인 브랜치에서 디벨롭 브랜치를 병합하게 되면 다음과 같은 화면이 됩니다.
하지만 이대로 병합을 진행하면 커밋기록은 남지 않습니다.
따라서 아래와 같이 작성해서 병합해야
이전에 그림으로 확인했던 것처럼 커밋기록이 남아서 확인할 수 있습니다.
git merge develop --no-ff
- Pull request 개요
- Pull request의 개념
우리가 어떠한 브랜치를 다른 브랜치로 병합시킬 때 요청을 보낸 후 병합을 시키는 것을 말합니다.
사실 기업에서 사용하는 브랜치는 굉장히 다양하고 복잡한 구조로 이루어져 있습니다.
따라서 규칙 없이 머지를 이어가면 데이터가 서로 꼬이고 개발이 이루어질 수 없습니다.
그래서 일정한 규칙에 따라 요청을 보내고 규칙을 잘 지킨 파일만 병합시키는 식으로
프로젝트를 보호하고 운영하는 것입니다.
즉, 충돌을 미리 방지하고, 새롭게 병합할 코드를 다같이 리뷰할 수 있으며, 프로젝트의 진행상황을 관리합니다.
간단히 단계를 살펴보겠습니다.
이전에 배운대로 프로젝트를 clone 해오겠습니다.
복습하는 개념으로 일련의 과정을 떠올리면서 해보겠습니다.
이전에 만든 폴더를 지웁니다.
바탕화면에서 터미널을 엽니다.
그리고 현재의 경로가 바탕화면인지 다시 확인합니다.
git clone 주소
위 코드를 입력합니다.
복사된 폴더를 vscode로 엽니다.
위와 같이 준비가 되었다면 성공입니다.
이제 배워던 내용을 다시 적용할 시간 입니다.
새로운 브랜치를 만듭니다.
그리고 index.txt 내용에 새로운 내용을 추가 합니다.
커밋까지 완료합니다.
브랜치명에 유의하며 push하고 잘 올라갔는지 확인해보겠습니다.
이 화면까지 나왔다면 성공입니다.
생성된 브랜치도 확인할 수 있습니다.
그리고 우리가 확인해볼 pull request를 확인해보겠습니다.
이전 화면에서 봤던 초록 버튼을 눌러도 가능하지만
pull request 탭에 들어와서 새로운 풀 리퀘스트 버튼을 눌러 만들어 보겠습니다.
병합시킬 브랜치를 선택합니다.
그리고 'Create pull request'를 눌러 생성하겠습니다.
위와 같이 커밋한 제목대로 리퀘스트 제목도 변합니다.
커밋 제목 및 내용, 리퀘스트의 대부분을 팀들과 정한 규칙대로 작성해야 합니다.
하지만 지금은 이대로 진행하겠습니다.
그대로 'Creat pull request'를 눌러 진행합니다.
잠시 기다리면 위와 같은 화면으로 이동합니다.
그리고 우리는 병합을 하기 전에 파일이 지금 어떤 식으로 이루어져 있을지 생각해봐야 합니다.
이전에 작성했던 메인 브랜치에는 index.txt 파일에 두줄이 있고,
디벨롭 브랜치에 index.txt 파일은 추가로 두줄을 작성했었습니다.
따라서 우리의 최종 파일은 index.txt파일에 두줄이 추가된 네줄이 보일 것입니다.
그 부분을 염두에 두고 병합을 진행합니다.
컴펌을 하고 병합을 진행합니다.
화면의 초록 버튼이 open에서 보라색 merged로 바뀌었습니다.
다시 홈화면에서 메인 브랜치의 index.txt를 살펴보면 다음과 같이 변한 것을 확인할 수 있습니다.
그럼 우리가 개발한 내용을 성공적으로 메인 브랜치에 업데이트 한 것입니다.
축하합니다!
이제 앞으로 열정있는 팀원과 반짝이는 아이디어를 가지고 멋진 개발여정을 시작하셨으면 좋겠습니다.
항상 여러분과 제 자신을 응원합니다!
'👾Git & GitHub > Git to GitHub' 카테고리의 다른 글
[깃허브 프로필부터 뱃지까지] (0) | 2023.08.25 |
---|