Yejom's Dev Log
[Git] 초기 세팅, 레포지토리, 브랜치, Git Bash 본문
git - 소스 코드 파일 버전 관리
- Command Line Interface (CLI)

- 명령어
cd - 폴더 접속, 경로 입력 가능
cd . . - 하위 폴더로 나가기
ls - 폴더 내 파일 확인 가능
git init - 비어있는 폴더여야 함
.git 파일 건드리면 기능에 문제 생길 수 있음.
LF, CRLF - 줄바꿈에 대한 용어
파일을 깃으로 처리할 때 운영체제 호환 문제로 충돌이 발생할 수도 있음을 경고
https://www.mireene.com/webimg/linux_tip1.htm
리눅스 기본 명령어
chmod 화일 permission 변경 리눅스에서는 각 화일과 디렉토리에 사용권한을 부여. 예) -rwxr-xr-x guestbookt.htmlrwx :처음 3개 문자 = 사용자 자신의 사용 권한r-x :그다음 3개 문자 = 그룹 사용자의 사
www.mireene.com
- Git 초기 세팅 ~ 사용자 정보 등록
Git Bash에 아래 명령어 작성
$ git config --global init.defaultBranch main
$ git config --global user.name "GitHub 프로필 이름"
$ git config --global user.email "GitHub 이메일 주소"
$ git config --global --list
- 레포지토리(Repogitory)
- Git으로 관리되는 폴더
바탕화면 Github 폴더에서 Open Git Bash Here 를 통해 접속
- Git 레포지토리 생성
Git Bash에 아래 명령어 작성
$ git init
# 해당 위치를 레포지토리로 만들어줌.
$ echo "hello world" > readme.txt
# 파일에 내용(데이터셋) 작성 / 리눅스 명령어 / 기본 옵션
$ git status
# 현 레포지토리의 파일 상태 확인(트래킹) / 빨간색 파일은 변동 사항이 있는 파일
$ git add .
# 변동 사항이 있는 모든 파일을 "commit" 목록에 추가 / . 대신 파일 이름을 직접 지정하거나 *.txt처럼 특정 확장자만 선택하는 것도 가능
$ git status
$ git commit -m "study: first commit"
# Git에서 버전을 생성하게 하는 명령어, 무조건 코멘트 하나를 달아야 함 / 고유한 커밋 ID가 부여됨
$ git log
# 커밋 내역 / 사용자 닉네임, 이메일, 시간, 메모 확인
- Git Branch
- 서로 다른 환경에서 기능 추가를 위해 복붙, 덮어쓰기 하는 불편을 줄여줌.
- 서비스 중단 없이 수정 가능
- Main, Develop, Feature : branch 각각의 이름
- 동그라미는 commit 지점; 개발된 내용을 합치는 구간에서 버전 생성
도식 과정: new Branch 생성 -> Commit -> 기능 개발 -> Commit -> 테스트 -> Commit -> Main Branch와 Merge
※ Head는 항상 각 브랜치의 최신 커밋으로 ...
$ git init
$ echo "I'm Yejeong" > introduce.txt
$ git status
$ git add .
$ git commit -m "Intro"
# Commit 로그 생성
$ git log
$ git branch develop
# 새로운 Branch develop 생성
$ git switch develop
# Branch develop 으로 이동
$ git status
# develop에서 변동 사항 만들어주기
$ git add .
$ git commit -m "modified"
# Commit 로그 생성
$ git switch main
# Branch 이동, 매우 중요함
$ git merge develop
# Branch main과 develop 병합
※ Merge를 한다고 Branch가 사라지는 것은 아님. 안 쓰는 것은 지워주는 게 좋다.
$ git branch -d (브랜치이름)
# Branch 삭제
$ gitk
# Branch와 Commit 현황 확인 가능한 프로그램 열기

###@DESKTOP-IEIUV5F MINGW64 ~/Desktop/YeRepo (main)
$ ls
MyCode.txt
###@DESKTOP-IEIUV5F MINGW64 ~/Desktop/YeRepo (main)
$ cat MyCode.txt
AAA
BBB
CCC
- Git Conflict (충돌)
$ git merge dev
Auto-merging MyCode.txt
CONFLICT (content): Merge conflict in MyCode.txt
Automatic merge failed; fix conflicts and then commit the result.
'merge 충돌 상태'에서 벗어나지 않으면, 명령어가 안먹힘 (main|MERGING)
=> add와 commit 으로 해결 가능.
: 강제로 충돌 상태에서 빠져나오는 방법도 있지만 가능한 충돌을 해결해야 ...


###@DESKTOP-IEIUV5F MINGW64 ~/Desktop/YE (main|MERGING)
$ git add .
###@DESKTOP-IEIUV5F MINGW64 ~/Desktop/YE (main|MERGING)
$ git commit -m "conflict resolved: ABC"
[main f020be5] conflict resolved: ABC
###@DESKTOP-IEIUV5F MINGW64 ~/Desktop/YE (main)
$ ls
MyCode.txt
###@DESKTOP-IEIUV5F MINGW64 ~/Desktop/YE (main)
$ cat *
ABC
메모장 저장 후에 변경 사항 add -> commit 으로 충돌 해결
- Git Revert
git revert (커밋 ID)
이전 커밋 내역들을 남겨두고, 되돌리고 싶은 커밋의 코드만 복원.
새로운 커밋 내용을 추가
하나 이전의 커밋으로만 복원 가능함.
- Git Reset
git reset (커밋 ID)
커밋 내역을 삭제하고 되돌리고 싶은 커밋의 코드로 돌아감.
※ 둘 다 조심해서 써야 한다 ,,,! 협업할 때는 revert 사용 추천
'Smart Factory Bootcamp' 카테고리의 다른 글
[C++ 입문] 4. vector, execution time (0) | 2024.04.26 |
---|---|
[C++ 입문] 3. pointer, dynamic array (0) | 2024.04.26 |
[C++ 입문] 2. loop, function, array (0) | 2024.04.24 |
[C++ 입문] 1. variable, operator, condition (0) | 2024.04.24 |
[GitHub] Remote, Clone, Push (0) | 2024.04.24 |