Danny의 iOS 컨닝페이퍼
article thumbnail
Published 2022. 12. 29. 16:10
[Git/GitHub] Git 사용법 Etc.

기본 명령어

모든 명령에서 '<>' 는 제거하고 입력해주세요.

 

명령창에서 한번에 모든 단어를 지우려면 'control' + 'u' 를 사용

git init                                 // 깃을 생성
git status                               // 상태 확인. commit 할 파일이 있나 보여줌
git log                                  // commit 내용을 보여줌 
git log --oneline                        // 한 줄씩 깔끔하게 commit 내용을 보여줌 
git diff                                 // 변한 것을 보여줌
git config --list                        // 깃 설정 리스트 보기
git config --unset <지우고 싶은 설정>    // 설정 지우기 (list확인 후 "=" 전까지가 이름)

git remote set-url origin <새로운 repo 주소>  // 깃 리모트 url 변경

rm -rf .git                                  // 깃 파일 삭제(삭제할 폴더로 들어가서 사용)

 

Add (Staging area에 추가)

git add <파일 이름>            // 파일을 스테이징 영역에 저장
git add .                      // 모든 파일을 스테이징 영역에 저장
git reset HEAD <파일 이름>     // git add취소 (파일명이 없는 경우 스테이징을 전체 안 한 상태로 돌려준다.)

 

Commit (Repository에 추가)

git commit -m "commit 내용"      // commit을 추가
git commit --amend               // commit 수정 (수정 "i" 입력, 빠져나오기 esc누른 후 ":wq" 입력)

 

restore (되돌리기)

// 선택한 파일을 최근 commit 상태로 되돌립니다.
git restore <파일 이름>             

// 특정 commit 상태로 파일을 되돌립니다.
git restore --source <커밋 주소> <파일 이름>

 

reset (초기화)

reset은 위험하므로 사용을 지양합니다.

git reset <HEAD위치>             // commit의 위치 변경 (tap으로 위치 찾거나 HEAD^ 이전 commit으로 되돌리기)

// 더욱 더 세부적으로 들어가면 이렇게 3가지 방법으로 나눌 수 있다.

// commit을 취소하고 해당 파일들은 staged 상태로 워킹 디렉터리에 보존
git reset --soft HEAD^
// commit을 취소하고 해당 파일들은 unstaged 상태로 워킹 디렉터리에 보존 (reset의 기본옵션)
git reset --mixed HEAD^ 
// commit을 취소하고 해당 파일들은 unstaged 상태로 워킹 디렉터리에서 삭제
git reset --hard HEAD^ 

git reset ORIG_HEAD             // 실수로 reset했을 때, reset을 하기 전으로 되돌린다.

 

Push & Pull

git push
git push <저장소명> <브랜치명>    // push
git push -u origin my-feature     // 다음 push 할 때 <저장소> 및 <브랜치> 생략 가능 (== git push)
git push --force, -f              // 로컬에서 원격으로 최신 변경사항이 있다고 확신할 때 사용 
                                  // (! [rejected] master -> master (non-fast-forward) 에러 시 사용)
           
git push -f origin master         // reset후 강제로 원격저장소(github)를 덮어 씌움 (위험)
git push origin +master

git pull
git push origin HEAD:main
git pull origin main              // pull

 

Branch

git branch <브랜치명>                 // 브랜치 생성
git checkout <브랜치명>               // 다음 브랜치로 전환
git branch -D <브랜치명>              // 브랜치 삭제

git merge <병합하고 싶은 브랜치명>    // 병합 (main에 다른 브랜치를 넣으려면 main이 위에 HEAD에 위치해야 함, main으로 브랜치 전환)
git merge --squash <브랜치명>         // 커밋한 내용들을 전부 병합할 때

git cherry-pick <커밋주소>            // 체리픽 다른 브랜치의 주소를 사용해 커밋한 내용 가져오기

 

Clone

git clone <레포지토리 깃 주소>  // 클론 생성

 

서브모듈 추가

git submodule add <깃허브 레포 주소> <파일 이름>   // 부모 폴더에 추가를 한다.
git submodule status                               // 서브모듈 커밋주소 확인
git rm -f <파일 이름>                              // 서브 모듈 제거 (.gitmodules의 정보 제거)
git config --unset <모듈 url, active>              // 제거해준다
// 깔끔하게 제거하려면 .git(숨긴 폴더)의 modules을 제거하면 깔끔히 제거된다.

 

cached지우기

// 파일 제거
git rm --cached SecretKey.plist
// 전체 파일 제거
git rm --cached *.text
// 폴더 제거
git rm --cached folder/ -r
// 전체 트래킹 풀기 ⭐️
git rm -r --cached .

Git ignore

gitignore 양식

## 파일 무시
test.txt

## 다음과 같은 확장자는 전체 무시
*.text
*.exe
*.zip

## 폴더 무시
test/

 

gitignore_global 적용시키기

git config --global core.excludesfile ~/.gitignore_global  // 한번만 해주면 된다.

기존 레포 합치기

이 방식으로 레포를 합치게 되면 Github의 초록잔디! 즉, commit을 유지한 채로 레포를 정리할 수 있습니다!

 

예를 들어 DanielRepo라는 레포에 Practice라는 레포를 합치고 싶다고 가정을 하겠습니다.

 

DanielRepo == 부모 레포

Practice == 합칠(복사할) 레포

 

1. 터미널에서 DanielRepo의 주소로 클론을 만들어 줍시다. ⭐️ (클론을 새로 만드는 게 정신건강에 좋습니다.)

git clone <깃 레포지토리 주소>

// ex) git clone https://github.com/DanielY1108/DanielRepo.git

 

2. 터미널에서 DanielRepo로 접근한 뒤 Practice의 이름, 레포 주소, 브랜치 이름을 사용합니다. (참고. 아래 코드)

git subtree add --prefix= <레포지토리 이름> <레포지토리 깃 주소> <브랜치 이름> 을 적어줍니다.

// ex)
git subtree add --prefix=Practice https://github.com/DanielY1108/Practice.git main

레포지토리 깃 주소

 

3. Push를 해주면 완료

 

만약  Working tree has modifications.  Cannot add. 와 같은 에러 메시지가 나올 때에는

현재 DanielRepo의 레포가 최신 상태가 아닐 때 이런 에러가 발생합니다.

 

아래 코드를 사용하세요. 이것도 안되면 클론을 꼭 만들어주고 시작하세요!

git add . 
git commit -m "Done"
git push
// 를 통하여 최신으로 업데이트 시켜줍니다.

 

 

[Git] 여러 레포지토리 하나로 합치기(Merge multiple repository)

안녕하세요 Foma👟 입니다! 오늘은 여러 레포지토리를 하나로 합치는 방법에 대해서 알아볼건데요. 예전에 플러터 공부하던 간단한 미니 프로젝트들이 많이 쌓여서 이걸 하나의 Flutter Example이라

fomaios.tistory.com


참고

 

누구나 쉽게 이해할 수 있는 Git 입문~버전 관리를 완벽하게 이용해보자~ | Backlog

누구나 쉽게 알 수 있는 Git에 입문하신 것을 환영합니다. Git을 사용해 버전 관리를 할 수 있도록 함께 공부해봅시다!

backlog.com

 

GitHub - mingrammer/git-tips: Git 팁 모음집 (https://github.com/git-tips/tips 한국어 버전)

:books: Git 팁 모음집 (https://github.com/git-tips/tips 한국어 버전) - GitHub - mingrammer/git-tips: Git 팁 모음집 (https://github.com/git-tips/tips 한국어 버전)

github.com

 

반응형
profile

Danny의 iOS 컨닝페이퍼

@Danny's iOS

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!