728x90
반응형
SMALL
1. 원격 저장소 (Remote Repository)
1.1 원격 저장소 생성
✅ 로컬 저장소 생성 및 초기화
$ git init local # "local"이라는 Git 저장소 생성
✅ 원격 저장소 전용 저장소 생성(Bare Repository)
$ git init --bare
- Bare Repository: 소스 코드 작업 없이 Git 서버로만 사용되는 저장소
- 협업 환경에서 중앙 원격 저장소 역할을 함

1.2 원격 저장소 연결 및 설정
✅ 기존 로컬 저장소에 원격 저장소 추가
$ git remote add origin /c/Users/dys11/Desktop/Git_practice/remote
- origin은 별명(alias)이며, 원격 저장소 주소를 쉽게 관리하기 위한 것
✅ 원격 저장소 삭제
$ git remote remove origin
✅ 원격 저장소 연결 확인
$ git remote -v

1.3 원격 저장소로 Push (업로드)
✅ 로컬 브랜치를 원격 저장소로 Push
$ git push origin master
- `master` 브랜치를 원격 저장소(origin)의 같은 브랜치로 push
- 로컬 저장소를 기준으로 원격 저장소로 나의 작업을 보낼 때 사용( = push)
✅ 자동 푸시 설정
$ git config --global push.default simple
- Git의 기본 push 설정을 simple 방식으로 변경
✅ 첫 푸시 시 브랜치 연결(-u 옵션)
$ git push --set-upstream origin master
- 현재 로컬 브랜치를 원격 저장소의 master 브랜치와 연결
- 이후부터는 git push만 사용해도 자동으로 푸시



1.4 GitHub와 원격 저장소 연결
✅ Github 저장소 복제(Clone)
$ git clone https://github.com/git/git.git gitsrc
- gitsrc라는 폴더에 해당 Git 저장소를 복사

✅ 로컬 저장소를 원격 저장소에 연결
$ git remote add origin https://github.com/사용자명/저장소명.git
✅ 원격 저장소를 로컬로 복사(Clone)
$ git clone https://github.com/glorypang/Git_practice.git .
- 현재 디렉토리에 저장소 다운로드
1. Github에서 New 버튼으로 새로운 레포지를 생성

2. Clone의 두가지 방법
위의 방법: 원격 저장소를 만들고, 로컬 저장소를 만들고 원격 저장소에 옮기기
밑의 방법 로컬 저장소에서 작업하던 것을 원격 저장소로 옮기기
- 원격 저장소에 로컬 저장소를 add + 주소에 origin이라는 별명 부여
git remote add origin https://github.com/glorypang/Git_practice.git


✅ 현재 디렉토리에 clone
$ git clone https://github.com/glorypang/Git_practice.git .

2. 브랜치 충돌 해결 (Merge Conflict)
2.1 브랜치 충돌 원인
- 두 개의 브랜치에서 같은 파일의 같은 위치를 수정하면 충돌 발생
- git merge 실행 시 자동 병합이 불가능할 경우 충돌 메시지 출력
$ git merge exp
# 충돌 발생 (CONFLICT)
✅ 충돌 발생 시 메시지 예시
CONFLICT (content): Merge conflict in example.txt
Automatic merge failed; fix conflicts and then commit the result.

2.2 충돌 해결 방법
✅ 충돌 파일 열어보기
$ vim example.txt
✅ 충돌 파일 내부 예시
<<<<<<< HEAD # 현재 checkout한 브랜치의 수정사항
현재 브랜치의 코드 (master)
======= # 구분자
병합하려는 브랜치의 코드 (exp)
>>>>>>> exp # exp브랜치의 내용


✅ 수정 후 충돌 해결 커밋
$ git add example.txt
$ git commit -m "Merge conflict resolved"

3. Reset vs Checkout (이전 커밋으로 되돌리기)
3.1 Reset 종류 (--soft, --mixed, --hard)
- `$git commit`하면 repository상태
- `$git add` 하면 index상태 (staging area)
- 파일 작성만 했다면 working copy 상태
| 옵션 | 설명 |
| `--soft` | 커밋만 취소, 작업 내용 유지 |
| `--mixed` | 커밋 & 스테이징 취소, 파일은 유지 |
| `--hard` | 모든 변경사항 삭제 (복구 불가) |
✅ 예제
$ git reset --soft HEAD~1 # 최근 커밋만 취소
$ git reset --mixed HEAD~1 # 커밋 + 스테이징 취소
$ git reset --hard HEAD~1 # 모든 변경 사항 삭제
| Working directory Working tree Working copy |
index Staging are Cache |
repository history tree |
| git reset --sotf | ||
| git reset --mixed | ||
| git reset --hard | ||
✅ 특정 커밋으로 되돌리기
- 특정 커밋 ID로 이동 (변경 사항 완전 삭제)
$ git reset --hard c79dc014a6


✅ 과거 커밋 로그 확인
- 모든 커밋 히스토리 확인 가능
- reset 후에도 커밋 ID를 찾아 다시 되돌릴 수 있음
$ git reflog

4. Rebase vs Merge
4.1 Merge (병합)
- 두 개의 브랜치를 합치는 방식
- 새로운 병합(commit)이 생성됨
✅ Merge 예제
$ git checkout master
$ git merge feature-branch
✅ Merge 후 로그
* (master) Merge branch 'feature-branch'
* (feature-branch) 새로운 기능 추가
* (master) 기존 코드
📌 특징
- 새로운 커밋이 추가되면서 히스토리가 남음
- 협업 환경에서 많이 사용됨 (기록을 남기기 때문)
4.2 Rebase (기반 변경)
- 브랜치 기반을 변경하여 히스토리를 정리하는 방식
- Merge와 달리 새로운 커밋을 생성하지 않고 기존 커밋을 재배치
✅ Rebase 예제
$ git checkout feature-branch
$ git rebase master
📌 특징
- 브랜치 커밋을 마치 하나의 연속된 커밋처럼 정리
- 병합 커밋이 생성되지 않아 히스토리가 깔끔
- 개인 작업에는 유용하지만, 협업 중 rebase 사용은 신중해야 함
✅ Rebase 후 로그
* (master) 새로운 기능 추가
* 기존 코드
- 기존 브랜치 히스토리가 정리됨
✅ 충돌 발생 시 해결
$ git rebase --continue
728x90
반응형
LIST