github에서 처음 레파지토리를 생성할 때 readme와 같이 만들면, 

Readme.me 파일이 생성되고 add . 와 commit이 자동으로 된다.

 

1. git clone https://주소

 

2. git checkout -b dev

: dev 브랜치를 생성한다. (개발 브랜치)

 

3. git checkout -b setting_topic

: setting_topic 브랜치 생성한다.

 

4. 환경설정 파일 생성 -> add . -> commit

 

5. git checkout dev

: dev 브랜치로 이동한다.

 

6. git merge --no-ff setting_topic

: 위에 처럼 진행하면 merge할 경우 fast-forward로 되기 때문에 로그가 남지 않는다. 그래서 --no-ff라는 옵션을 주어 로그를 남겨준다. 

 

 

------> 위와 같은 방식으로 로그인, 회원가입 기능 구현해서 dev에 업로드까지 했고, 글쓰기 기능 구현은 중간까지 진행했다면.....

 

7. 

--> topic 커밋 메시지에는 남겨도 상관없음.. 후에 글쓰기 구현을 완료했으면 다시 커밋까지 진행

 

8. 

 

9. git rebase -i HEAD~2

 : 위에 commit 메세지 보면 '글쓰기 아직 안됨.~' 이 부분이 필요없어 rebase 해줌.

 

10.  git checkout dev

: dev 브랜치로 이동

 

11. git merge --no-ff write_topic

: wirte_topic을 merge하고 로그를 남김

 

-------- 기능 구현이 끝남. 

 

12. git checkout main

 

13. git merge --no-ff dev

:main에 dev 병합한 로그 남김

 

14. git tag blog1.0.0 

: main에는 tag를 남겨줌.

=> 프로젝트의 중요한 지점을 식별하여 특정 시점의 상태를 추적하고 팀원들이 쉽게 찾고 이해할 수 있도록 도움.

 

15. git tag -n

: 태그와 메시지를 함께 표시해주는 명령어로, 각 태그와 해당 태그에 대한 메시지를 함께 표시한다. 

-n은 태그와 함께 작성된 주석 메시지를 보여준다. 

 

16. git push origin main

: main 브랜치에 업로드

(git push --tags origin main 명령어를 사용하면 tags도 같이 업로드됨)

 

 

 

일반적으로 
1. main : 배포 브랜치 (주로 안정적인 코드를 유지하는데 사용되며, 보통 프로덕션 환경에 배포하기 전의 안전화된 코드를 관리하는 데 사용... 배포 가능한 상태의 코드 유지)
2. dev  : 개발 브랜치 (개발 중인 기능들을 통합하는 곳으로 사용되며, 일반적으로 여러 기능 개발 브랜치들을 병합하기 전에 중앙 집중화된 곳으로 사용되며, 통합 및 충돌 해결 등의 작업이 이루어질 수 있다.)
3. topic : 특정 브랜치 (특정 기능 또는 작업을 위해 만들어진 브랜치로, 단일 기능 또는 작업에 집중하여 작업ㅇ르 수행하고 나중에 개발 브랜치로 병합하는 데 사용된다.)

 

 

 

 

 

 

 

 

[유튜브] 지옥에서 온 관리자 Git 를 참고하며 작성했습니다.

'Study > Git' 카테고리의 다른 글

Git rebase 사용 방법  (1) 2024.01.09
Git Branch 개념 및 3-way 와 fast-forward  (0) 2024.01.09
Git 실행 원리와 기본 실습  (0) 2024.01.04
rebase : 브랜치 기록을 다른 브랜치 위로 옮기는 작업(로그 정리)
=> rebase를 사용하면 이력이 깔끔해지고 팀 내 협업에서 보다 이해하기 쉬운 커밋 이력을 유지할 수 있음.

1. 브랜치 재정렬 : 기존 브랜치의 변경 내역을 다른 브랜치의 최신 기록 위로 옮겨 정리
2. 병합 커밋 줄이기 : 두 브랜치를 병합할 때 생성되는 병합 커밋을 줄이거나 없애고 깔끔한 이력 유지 가능

 

Rebase 그림으로 설명

1. 환경설정, 로그인 퇴근, 로그인 아픔, 로그인 완료 파일들을 commit하여 로그를 남긴다.

2. 로그인 퇴근과 로그인 아픔의 로그는 없애고 싶다.

3. git reset -i HEAD~3를 통해 설정한다.

==> 방향은 최근에 commit한 방향부터 squash

 

rebase 실습

1. 설정한 log 확인

2. git  rebase -i HEAD~3

: 창이 나오고 rebase 설정할 수 있는 옵션들이 나옴.


**** d fd8032d 로그인아파서퇴근을 드롭하면

: 로그인아파서퇴근을 커밋한 한 것이 삭제된다.

 

**** git reflog : git 브랜치나 HEAD와 같은 참조들이 가리키는 커밋 이력을 추적하는 도구로 실숫로 커밋을 잃어버리거나 되돌리고 싶을 때 사용한다.

 

**** git reset --hard 1a6a : 명령어 사용해서 reset

: 로그인아파서퇴근 drop하기 전으로 이동


=> 로그인 완료, 로그인아파서퇴근을 squash해주고, 로그인퇴근을 pick해주면

로그 기록에 환경설정완료와 로그인완료만 남는다.

 

 

squash : 여러 개의 연속된 커밋을 하나의 커밋으로 합치는 작업 
=> 이 작업을 통해 커밋 이력을 깔끔하게 유지하거나, 불필요한 세부 변경 사항을 하나의 의미 있는 커밋으로 정리 가능

1. git rebase -i  HEAD~갯수 : 여러 커밋을 병합하고 싶은 브랜치 이력을 열고, squash 명령어를 사용하여 커밋을 합침
2. git merge --squash : 브랜치를 병합하면, 커밋을 합친 상태로 스테이징 영역에 올라가게 됨. 이후 새로운 커밋을 생성하여 이를 커밋 이력에 반영

 

 

 

 

 

 

 

 

 

[유튜브] 지옥에서 온 관리자 Git 를 참고하며 작성했습니다.

'Study > Git' 카테고리의 다른 글

Github 사용법 (1) 혼자할 때  (1) 2024.01.10
Git Branch 개념 및 3-way 와 fast-forward  (0) 2024.01.09
Git 실행 원리와 기본 실습  (0) 2024.01.04
Git에서 브랜치란?

* Branch : 코드 기록의 특정 시점을 가리키는 포인터 
=> 이 포인터를 변경하면 작업 중인 코드의 다른 버전으로 전환할 수 있으며, 이를 통해 여러 기능을 동시에 개발하거나 버그를 수정하는 등의 작업을 효과적으로 할 수 있다.

 

fast-forward

1. 블로그 프로젝트에서 회원가입, 로그인 기능을 생성하면 main branch에 생성된다.

2. 로그인에서 아이디 중복 체크하는 기능을 생성해보고 싶다. (아이디어를 내서 기능만 구현)

 

3. 아이디 중복체크 기능을 구현했는데 마음에 들어서 프로젝트에 추가한다.

 

3-way merge

1. 블로그 프로젝트에서 회원가입, 로그인 기능을 생성하면 main branch에 생성된다.

2. 로그인에서 아이디 중복 체크하는 기능을 생성해보고 싶다. (아이디어를 내서 기능만 구현)

3. 원래 구현하려면 글쓰기 기능을 만든다.

4. 아이디 중복체크 기능을 구현했는데 마음에 들어서 프로젝트에 추가한다.

=> 위에서 fast-forward는 로그인 바로 다음에 idea 브랜치에서 구현한 기능을 바로 merge할 수 있지만, 여기서는 로그인 다음 글쓰기 기능이 있기 때문에 3-way merge를 해야 한다.

 

Fast-Forword Tree-way
회원가입 회원가입 회원가입 회원가입
로그인 로그인 로그인 로그인
  아이디 중복체크 API 글쓰기 아이디 중복체크 API
  아이디 중복체크 JS   아이디 중복체크 JS
  아이디 중복체크 완료   아이디 중복체크 완료
둘의 형상이 같음 둘의 형상이 다름

 

 

Fast-Forward 실습

1. 로그인, 회원가입 커밋

 

2. 현재 head는 회원가입 있는 부분인 master를 가리키고 있다.

 

3. git branch

: git branch 명령어를 통해 새로운 브랜치 생성

=> 'git branch'는 코드의 다른 버전을 관리하고 개발을 분리하는 데 사용된다. 또한 현재 프로젝트에서 작업하는 브랜치의 목록을 확인하거나, 새로운 브랜치 생성뜨는 브랜치 간 전환 가능하다.

 

: git branch 목록 확인 >> 현재 master에 위치 

 

4. git checkout

: checkout 명령어로 topic 브랜치로 변경

 

5. 아이디 중복 체크 커밋

: head는 topic 브랜치에 있는 중복체크를 가리킴

 

**** git checkout master

 

브랜치를 master로 이동하면 topic 브랜치에 저장한 아이디중복체크는 보이지 않게 된다.

 

6. git merge topic

: topic 브랜치와 master 브랜치를 merge함.

 

 

Tree-way 실습

1. 로그인, 회원가입 커밋

2. 현재 head는 회원가입 있는 부분인 master를 가리키고 있다.

3. git branch topic

4. git checkout topic

======> 3, 4번 합쳐진 명령어 : git checkout -b topic

5. 아이디 중복 체크 커밋

6. git checkout master --> master 브랜치로 이동

7. touch 글쓰기.txt --> 글쓰기 파일 생성(head는 master 브랜치에 있는 글쓰기로)

8. git checkout topic

9. git merge topic

 

 

 

 

 

 

 

 

[유튜브] 지옥에서 온 관리자 Git 를 참고하며 작성했습니다.

'Study > Git' 카테고리의 다른 글

Github 사용법 (1) 혼자할 때  (1) 2024.01.10
Git rebase 사용 방법  (1) 2024.01.09
Git 실행 원리와 기본 실습  (0) 2024.01.04

GIt : 분산관리 시스템(DVCS)

Git 실행 원리

1. 첫 번째 파일 생성 하고 깃에 저장

1. 작업 영역 부분인 폴더에 test1.txt라는 파일을 생성한다.

2. git add에서 인덱스 영역에 추가한다.

3. 인덱스 영역은 트리라는 폴더 안에 test1.txt 저장하고 A10이라는 해시값을 부여한다.

4. git commit를 통해 헤더 영역에 추가된다.

5. 헤더 영역은 영구적으로 기록되고, 현재 헤더는 A10이라는 해시값을으로 표시한다. 

 

2. 두 번째 파일 생성 하고 깃에 저장

 

1. 작업 영역 부분인 폴더에 test2.txt라는 파일을 생성한다.

2. git add에서 인덱스 영역에 추가한다.

3. 인덱스 영역은 트리라는 폴더 안에 test2.txt 저장하고 B10이라는 해시값을 부여한다.

4. git commit를 통해 헤더 영역에 추가된다.

5. 헤더 영역은 영구적으로 기록되고, 현재 헤더는 B10이라는 해시값을으로 표시한다. 

 

3. 두 번째 파일 수정 하고 깃에 저장

1. 작업 영역 부분인 폴더에 test2.txt라는 파일을 수정한다.

2. git add에서 인덱스 영역에 추가한다.

3. 인덱스 영역은 트리라는 폴더 안에 test2.txt 저장하고 C10이라는 해시값을 부여한다.

4. git commit를 통해 헤더 영역에 추가된다.

5. 헤더 영역은 영구적으로 기록되고, 현재 헤더는 C10이라는 해시값을으로 표시한다. 

 

- 인덱스 영역은 지금까지 저장된 모든 History를 가지고 있다.
- 인덱스 영역에 저장되면 해시값이 부여되고 해시값으로 관리된다.
- commit를 통해 인덱스에 저장된 내용을 영구적으로 기록하는 head 영역에 저장된다.

 

 

Git 기본 실습

1. git init : 초기 설정

 

=> .git이라는 숨김 폴더가 생성된다. 

 

2. git status : 변경 감지

---------- add 하지않고 파일을 처음 생성했을 때 출력되는 문구

Untracted files 변경된 파일이 존재한다는 의미!

(unstracked : 아직 관리되고 있지 않다.)

 

---------- commit 한 파일을 새로 수정했을 때 출력되는 문구

 

 

3. git add . : 변경된 모든 파일

 

깃 최초 설정
1. 사용자 정보 등록
git config --global user.name "사용자"
git config --global user.email "사용자@naver.com"

---------  git config --list
명령어를 사용하면 설정한 list들이 나오는 데 여기에 사용자 정보를 등록한 정보 나온다.

 

 

4.  git commit -m "첫 번째 사진"

 

5. git log

head에 저장된 내용 출력.

노란 글자로 commit 하고 뒤에 49bf...가 해당 파일의 해시값

 

.git -> reg -> heads -> master에 들어가면 현재 헤더가 가리키는 해시값이 표시되어 있다.

 

 

 

 

 

 

 

 

 

[유튜브] 지옥에서 온 관리자 Git 를 참고하며 작성했습니다.

'Study > Git' 카테고리의 다른 글

Github 사용법 (1) 혼자할 때  (1) 2024.01.10
Git rebase 사용 방법  (1) 2024.01.09
Git Branch 개념 및 3-way 와 fast-forward  (0) 2024.01.09

+ Recent posts