공부

리포지터리(repository) 생성 및 파일 추가

요빈 2023. 2. 4. 19:19

리포지터리(repository)를 생성할 때마다 매 번 인터넷에 검색해서... 아예 정리해놓기로!

 

1. 깃허브 접속 후 로그인

 

2. 새로운 repository 생성

 

3. 생성할 리포지터리 정보 입력

 

   - 프로젝트 이름 : 리포지터리 이름 규칙(Naming Convention)에 따라 설정

      * 리포지터리 이름 규칙(Naming Convention)은 다음 링크에서 자세히 확인할 수 있다.

https://stackoverflow.com/questions/11947587/is-there-a-naming-convention-for-git-repositories

 

Is there a naming convention for git repositories?

For example, I have a RESTful service called Purchase Service. Should I name my repository: purchaserestservice purchase-rest-service purchase_rest_service or something else? What's the conventio...

stackoverflow.com

   - public / private 선택

   - 디폴트로 README 파일을 만들어주길 원하면 해당 체크박스 선택

 

4. 리포지터리 http 주소 복사

 

5. 리포지터리와 연결할 프로젝트 파일 선택 후 "Git Bash here"

 

   - Git이 컴퓨터에 깔려있는 상태여야 한다.

   - 난 안드로이드 프로젝트가 여러개 담긴 폴더를 연결할 예정이다.

 

6. git init

 

명령창에 git init을 입력하여 깃 저장소를 초기화 해준다.

깃 저장소를 초기화해줘야 일반 폴더에서 깃 저장소로 변한다.

 

7. git status

 

"추적하지 않는 파일"에서 내 프로젝트 파일들을 확인할 수 있다.

프로젝트에 연결하길 원하는 파일들이 모두 들어있는지 확인한다.

 

8. 파일 추가 및 커밋 메시지

* 아래 두 방법 중 택 1
git add . // 전체 파일 선택
git add <파일 이름> // 특정 파일 선택

git commit -m "커밋 메시지"

 

9. 레파지토리와 파일 연결

git remote add origin <복사한 주소>

 

10. 레파지토리에 파일 추가

git push origin master

 

11. 깃허브 새로 고침

 

여기까지 따라한 후 자신의 레파지토리를 확인하면 "Compare & Pull request" 버튼이 활성화되어 있을 수 있는데, 여기서 버튼을 눌러보면 "There isn't anything to compare"이라는 문구가 떠있는 경우가 있다. 

 

이 경우는 파일들을 master로 push를 하고, 아직 main 브랜치에 적용하지 않았을 때 발생한다.

다음 명령어를 입력해주면 레파지토리에 파일들이 연결된다.

하지만 -f 는 강제 옵션이므로 주의해서 사용하길 바란다.

git checkout master // 브랜치가 이미 master일 경우 생략 가능

git branch main master -f

git checkout main

git push origin main -f

 

12. 파일 추가

 

위 단계까지 따라하면 레파지토리가 무사히 생성된 상태일 것이다. 

다음 명령어들을 실행하면 추가한 파일들이 레파지토리에 반영된다.

git add . 

git commit -m "commit message"

git push origin main

 

   - 에러 정리: failed to push some refs to ...

 

에러 1

위 에러는 레파지토리 생성 시 추가한 README 파일이 로컬 데이터 저장소에는 반영되어 있지 않아 발생한 에러이다. 즉, 로컬 저장소와 원격 저장소의 데이터가 일치하지 않아 발생하는 에러라는 의미이다. 따라서 git pull origin master(main)명령어를 통해 깃헙의 수정사항을 받아서 일치시켜주면 간단히 해결된다.


+) 

 

원격 연결 삭제

git remote remove origin

 

원격 연결 확인

git remote -v

 

변경사항 반영

git pull

 

로컬 저장소의 git 히스토리를 삭제하고 싶으면 폴더 내 .git 폴더 삭제

-> git 관련 관리내용들이 담겨있음

 

.gitignore: git add 시 제외하고 싶은 파일 작성 -> 보안 상 업로드하면 안되는 파일들

 

더보기

내가 원한건 기존에 깃허브와 연결되어 있던 프로젝트를 아예 새로운 리포지터리에 업로드 하는 것이다.

프로젝트 내 모든 파일들을 다 업로드 하고 싶었는데, 깃허브와 연결되어있다보니 계속 commit할 내용이 없다는거다. 보통 add를 통해 변경사항을 추가하고 commit을 올리는데, add를 통해 모든 파일을 추가할 수가 없었다.

그래서 기존 git 연결을 끊고(.git 파일 삭제 & 원격 연결 삭제) 새로운 리포지터리를 생성해 추가하였다.

 

평소엔 직접 리포지터리를 만들고, git bash를 통해 git init, git remote add origin "url"을 통해 기반작업을 해두고

status -> add -> commit -> push 과정을 통해 리포지터리에 업로드했다.

근데 이런 저런 오류가 많았음. pull 안했다던가, 브랜치가 안맞는다던가(main-master, 지금은 기본 브랜치를 master로 바꿈)

 

근데 이번엔 안드로이드 스튜디오에서 직접 share on Project를 통해 리포지터리를 생성했다.

그러니까 리포지터리도 생성되어 있고, 프로젝트 파일도 깃과 연결되어 있더라.

git bash를 이용해 add를 할 수 있을지 git status를 해봤는데 파일들이 untracked로 뜨더라!!

여태까지도 이 과정(리포지터리 생성 -> git init)을 했다고 생각했는데도 안됐는데, 이번엔 기존 git 연결을 끊어서 된 것 같다... 원격 연결은 안되어 있어서 연결해주고 커밋 -> 푸시까지 해 성공적으로 업로드했다.