일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 새싹후기
- ImageSlider
- stanford
- IOS
- 프로젝트회고
- xml
- GIT
- 스터디
- process
- 프로그래머스
- flutter
- 조건문
- MVVM
- WidgetTree
- Swift
- CS193p
- colorofdays
- 코딩테스트
- 오늘의 색상
- 스위프트
- collectionView
- Masil
- UserDefault
- 청년취업사관학교후기
- 백준
- UIKit
- SwiftUI
- flutter #state # stateful #stateless
- 알고리즘
- xcode
- Today
- Total
개발을 시작하는 이야기
[GIT]기존 프로젝트 GitHub에 연결하기 본문
노트북의 지저분한 파일들을 정리하다 보니 아직 GitHub을 스치듯 지나가며 듣기만 했을 때, Web 마크업 언어를 공부할 때 만들었던 프로젝트가 눈에 띄었다. 지금이야 Xcode에서 GitHub와 연동해서 프로젝트를 시작하는 순간부터 지속적으로 관리해주기 때문에 편하게 사용했지만, Xcode가 아닌 다른 프로젝트를 그것도 완성되어 있는 프로젝트를 업로드하는 건 또 처음이라 찾아보고 적용했다.
흔치 않는 일이기 때문에 나중에 잊었을 때 다시 찾기 편하게 하기 위함과, 깃 헙과 연동하는 도중에 겪는 다양한 에러들을 정리하려고 포스팅한다.
1. 프로젝트 폴더 내 git init 생성
[윈도우가 설치된 노트북에서 진행했기 때문에 git bash를 활용했음]
[mac에서는 터미널로도 가능할 것 같은데 확인해보고 업데이트할 예정]
기존 프로젝트가 있는 폴더를 열어 마우스 우클릭, git bash here 선택
그러면 git bash 창이 열리고 git init을 통해 git을 초기화한다.
git init
2. GitHub repository 연결
깃허브에서 레포지토리를 생성한 뒤 깃헙 레포지토리 URL을 확인해서 깃헙 레포지토리와 연결한다.
git remote add origin https://github.com/teiresias22/...
연결이 잘 되었는지 확인하려면 아래 명령어를 입력한다.
git remote -v
-v는 version의 약자
3. Pull
일단 push 하기 전에 먼저 레포지토리를 pull 해주어야 한다.
git pull origin main
🤔 브랜치 변경
깃헙의 정책 변경으로 기본 브랜치 이름이 master에서 main으로 변경되었다.
master가 아닌 main 브랜치로 push를 하고자 브랜치 체크아웃을 진행한다.
git branch main
git checkout main
git branch -d master
성공했다면 git branch로 확인을 할 때 git bash 창의 주소줄 맨 오른쪽이 (master)에서 (main)으로 변경된다.
4. commit and push
연결된 데이터를 깃헙에 푸시한다.
git add .
git commit -m "commit comment"
git push
git add . : gitignore에 기제 된 것 고려하여 추가
git add * : gitignore에 기제된 것 고려하지 않고 모두 추가
🥸 git ignore 추가하기
git ignore를 생성해주는 사이트(https://www.toptal.com/developers/gitignore)를 통해 ignore 사항들을 추가한 뒤 다음 명령어를 수행해준다.
git add .gitignore
git commit -m "git ignore 추가"
git push
레포지토리에서 .gitignore가 보인다면 성공
Error Case
앞으로 error case는 여기에 기록하기로 함
* remote origin 삭제 (5/27 추가)
$git remote rm origin
* tracked 파일 삭제 (5/29 추가)
로컬 디렉토리와 git 저장소에서 모두 삭제
$git rm sample.txt
$gir commit -m "Delete sample.txt"
로컬 디렉토리에서는 삭제하지 않지만 git에서는 삭제
$git rm --cached sample.txt
$git commit -m "Delete sample.txt"
*git에서 commit된 대용량 파일 삭제하기(5/29 추가)
git에서는 100MB이 넘는 파일은 업로드 할 수 없음. 만일 꼭 업로드 해야 한다면 git-lfs를 활용해서 업로드 할 수 있음. 이번 프로젝트에 사용했던 파일중 하나가 여행영상 파일인데 이게 106.8MB라서 업로드가 안됨. 그래서 이번엔 삭제해서 올리기로 함. 하지만, 이 파일을 제거한 뒤에도 여전히 push하면 에러가 발생함. 이미 commit된 히스토리 상에 이 파일이 남아있기 때문임. 즉, 현재 파일시스템에 보이지 않을 뿐, git에서 여전히 이 파일을 끌어안고 있기 때문임.
이를 해결하기 위해서는 해당 파일이 commit된 이전 시점으로 되돌리고, 나머지 파일만 현재 상태로 유지해주도록 한다. 다만, 하나하나 삭제해 주어야 한다는 불편함이 있다.
$git filter-branch --tree-filter 'rm -rf sample.txt' HEAD
하지만 두번째 파일을 삭제하면 다음과 같은 메세지가 나타남
Cannot create a new backup.
A previous backup already exists in refs/original/
Force overwriting the backup with -f
대충 이미 백업이 있어서 새로운 백업을 생성할수 없고, -f를 사용해서 강제로 백업을 덮어씌워야 한다는 내용이다.
$git filter-branch -f --tree-filter 'rm -rf sample.txt' HEAD
위와 같이 -f를 붙여주면 해결.
오래전 공부하며 만들었던 마크업 프로젝트들을 보면서 왜 이렇게 했을까 싶은 것도 많지만 그래도 노력했다 싶은 것들도 있어서 뿌듯함도 있다.
'개발 이야기 > Swift' 카테고리의 다른 글
CollectionView를 활용한 이미지 슬라이드 적용 하기_2 (0) | 2022.06.14 |
---|---|
CollectionView를 활용한 이미지 슬라이드 적용 하기 (0) | 2022.06.13 |
Swift의 문자열은 count보다 isEmpty를 사용해야 하는 이유 (0) | 2022.05.16 |
[SwiftUI]Lecture 10: Multithreading Demo Gestures (0) | 2022.04.29 |
[SwiftUI]Lecture 9: EmojiArt Drag and Drop Multithreading (0) | 2022.04.23 |