하... 공부는 해도해도 끝이 없다
바보 같이 착각해서 또 시간낭비 하다가
이제야 잘못된 걸 깨닫고 시간낭비하지 않기 위해 글쓴다
맨날 핵심 못찾고 빙빙 도는 나는야 찐따똥멍청이...
그치만 기죽지말고 씩씩하게 가보자 ㅠ
+ 그리고 글 쓰기 위해 또 해보다가...
많은 에러를 만나고 완료하는데에 3시간이 걸렸다.
진짜 존나지쳐 그 개고생이 이 뒤로 이어질 예정
아래 참고 페이지는 시작하기 전에 꼭! 꼭! 읽어보는 것을 추천한다.
덕에 제대로 안잡힌 개념이 잡히면서 이해가 수월했다.
들어가서 선게시글 먼저 읽고, 기존 페이지를 읽자.
참고 페이지: https://dololak.tistory.com/304
[+NOTE] git bash의 단축키
복사: ctrl + Insert
붙여넣기: shift + Insert
INDEX
1. 준비 과정
우선 깃헙으로 이동한다.
나는 이쪽으로 들어왔다: "Github_twitter_tm"
이 원격 저장소를 연결할 거라, 이 주소를 그대로 복사했다.
(폴더명은 twitter data를 다루는 text mining 폴더라서다.)
그리고 연동할 로컬 저장소로 이동한다.
이때 나는 글에 사용할 예시로 'test_file' 폴더를 생성했다.
폴더 안엔 :) 만 적혀있는 smile.txt 파일도 넣어줬다.
우선 이 폴더가 아니라 상위 폴더에 머무른 상태로,
오른쪽 클릭 > git bush here
2. 원격 저장소와 연동
우선 $git init으로 초기화해준다.
= 현재 디렉토리에 .git 디렉토리를 만들고, 여기에 Git 저장소를 초기화한다.
왜 해주냐면, 안해주면 에러 뜰 수도 있다. (이미 에러 떴어서 아래 넣엇음 ㅎ;)
그리고 remote add origin +내 링크+ .git
이때 origin은 원격 저장소의 약칭이다.
그리고 git status를 해주면,
이런 내용이 뜬다.
명령어 정리:
$git init
$git remote add origin https://github.com/sara9801/Github_twitter_tm.git
$git status
3. add > commit > remote > push
untracked file에 대한 설명은 이미 참고한 페이지에 나와있다.
git 저장소에 이 파일을 넘기기 위해 우선적으로 add 해주어야 한다.
이때 $git add 하고 탭을 눌러주면 훨씬 간편하다.
나는 폴더 째로 넣어줄 것이므로 $git add test_file을 입력했다.
add를 했으면 커밋을 할 차례다.
주석을 적으려면 git commit -m "memo 적기"를 해주자.
그리고 git status,
여기까지 따라왔을 때의 결과!
nothing to commit, working tree clean :
좋은 신호다. 모두 잘 커밋해둬서 워킹 트리가 깨끗하다 이거다.
그리고 git remote -v
현재 프로젝트에 등록된 리모트 저장소를 확인한다.
마지막으로 push를 통해 원격 저장소에 업로드해준다.
코드는 git push origin main.
! _ !
유후~ 확인해보니 잘 올라왔다.
그치만 어차피 :) 만 들어있는 테스트 폴더. 삭제하자.
은근 코드가 복잡하다. 세 절차를 걸쳐야 한다.
1) 삭제: git rm -rf test_file
2) 커밋: git commit -m 'delete folder'
3) 푸쉬: git push origin main
단순히 설명하자면, 한번 삭제하면 이 정보를 다시 원격 저장소로 넘겨줘야되기 때문이다.
** 위의 코드는 test_file이 로컬 저장소와 원격 저장소 모두에서 삭제된다.
로컬에서 파일을 유지하려면 '--cached'를 입력해주자.
** '-rf'는 폴더를 제거해줄 때 쓴다.
전체 명령어 정리:
$git add test_file
$git commit -m "tistory_test"
$git remote -v
$git push origin main
$git rm -rf rest_file
$git commit -m "delete folder"
$git push origin main
참고 url: velog.io/@dailyhyun/TIL-github의-파일폴더-삭제하기
4. pu..sh? pull!
이쯤되면 의문이 생긴다.
이렇게 간단한데 왜 3시간이 걸렸을까?
그 이유는 단순하다. 로컬 저장소와 원격 저장소의 충돌 때문이다.
그럼 다음과 같은 에러가 발생해버린다.
error: failed to push some refs to 'http://github....git'
아래는 내 저장소의 상태였다.
원격 저장소에 파일을 올린 뒤 기존의 파일을 바꿔버렸다.
그저 File 2를 올리려 했지만, File 1에서 충돌이 일어난 것이다.
따라서, pull을 통해 원격 저장소 파일을 로컬 저장소로 갖고 온다.
그리고나서 push를 해주면 해결이 가능하다.
명령어 정리:
$git pull origin main
$git push origin main
참고 url: https://sosoeasy.tistory.com/406
누눈난나.
5. ERROR
날 킹받게 했던 모든 오류를 하단에 정리했다.
거두절미하고 하나씩 나열해보자.
5-1. 하위 폴더에 init을 한 것을 잊고 최상위 폴더에 init을 한 경우
에러 코드: does not have a commit checked out
Solution: 연동하고 싶었던 상위 폴더에 속한 '하위 폴더 내'의 .git 파일을 전부 삭제한다.
NOTE: 이때 .git 숨겨진 파일이므로, 보기>숨긴 항목 란을 체크해준다.
NOTE: 중요한 것은 내가 연동하고자 하는 상위 폴더에 .git은 절대 삭제하면 안된다!
5-2. 현재 폴더에 git에 대한 정보를 담은 파일이 없는 경우
에러 코드: not a git repository (or any of the parent directories): .git
Solution: $ git init 수행후 다시 $ git remote add 명령어 실행
NOTE: 위의 에러 1의 사진에 있는... 상위 폴더 .git을 삭제하면 발생한다^^(;)
5-3. 기존 레포지토리 삭제
에러 코드: Remote origin already exists
Solution: $ git remote remove origin 으로 연결 끊기
→ $ git remote add origin [새롭게 연결할 깃 레파지토리 주소] 으로 재연결
NOTE: 내 로컬 저장소에 이미 깃 레포지토리가 연결되어 있는 경우 발생한다.
5+. 브랜치 병합
이건 에러가 아니라 애매하지만,
거의 에러급으로 겪은 건 마찬가지므로 삽입했다.
표면적 원인: 내 깃헙 저장소의 default 브랜치가 main이었으나, bash 할 땐 master
그러나 본질적 원인: 2020.10월 기점으로 Github에서 Repository를 생성할 때 Default 브랜치명이 master->main으로 변경됨.
따라서 내 깃 브랜치명은 main이나, 나는 여전히 bash 할 때 master를 사용했으니 브랜치가 갈라질 수 밖에 없던 것이다.
이때 master로 생성된 브랜치를 main과 병합하면, 로컬 저장소가 전부 덮어쓰기 되며 깃 저장소 파일들이 날아가버린다.
따라서 디폴트 브랜치명과 내가 현재 사용 중인 브랜치를 꼭 확인해주자!
해결방법:
master→main으로 리네이밍: $ git branch -m master main
실수로 만든 브랜치는 다음과 같이 삭제: git push origin --delete master
'GITHUB' 카테고리의 다른 글
Github 입문기 (1) : commit, push, personal access token (0) | 2021.09.04 |
---|