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

1. 기본 명령어

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

 

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

<swift>
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에 추가)

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

 

Commit (Repository에 추가)

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

 

restore (되돌리기)

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

 

reset (초기화)

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

<swift>
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

<swift>
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

<swift>
git branch <브랜치명> // 브랜치 생성 git checkout <브랜치명> // 다음 브랜치로 전환 git branch -D <브랜치명> // 브랜치 삭제 git merge <병합하고 싶은 브랜치명> // 병합 (main에 다른 브랜치를 넣으려면 main이 위에 HEAD에 위치해야 함, main으로 브랜치 전환) git merge --squash <브랜치명> // 커밋한 내용들을 전부 병합할 때 git cherry-pick <커밋주소> // 체리픽 다른 브랜치의 주소를 사용해 커밋한 내용 가져오기

 

Clone

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

 

서브모듈 추가

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

 

cached지우기

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

2. Git ignore

gitignore 양식

<swift>
## 파일 무시 test.txt ## 다음과 같은 확장자는 전체 무시 *.text *.exe *.zip ## 폴더 무시 test/

 

gitignore_global 적용시키기

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

3. 기존 레포 합치기

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

 

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

 

DanielRepo == 부모 레포

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

 

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

<swift>
git clone <깃 레포지토리 주소> // ex) git clone https://github.com/DanielY1108/DanielRepo.git

 

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

<swift>
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의 레포가 최신 상태가 아닐 때 이런 에러가 발생합니다.

 

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

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

 

 

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

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

fomaios.tistory.com


4. 참고

 

누구나 쉽게 이해할 수 있는 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

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