Git Bash 오류 정리

Lee Min Seo·2023년 8월 4일
0

오류정리

목록 보기
1/1

git 클론 관련

명령어 순서
$ git remote add origin
$ git status
$ git add .
$ git commit -m "커밋 로그"
$ git remote -v
$ git push origin master(main)

질문:
$ git add .명령어에 대해, 꼭 띄어쓰기 해야해?
답변:
git add . 명령어는 현재 디렉토리 내의 모든 변경 사항을 Staging Area에 추가하는 데 사용됩니다.
.은 현재 디렉토리를 의미하며, add와 . 사이의 공백은 필수입니다.
공백은 git add 명령과 인자인 현재 디렉토리를 구분하는 역할을 합니다.

따라서 git add .와 같이 공백을 포함하여 작성해야 합니다.
git add.와 같이 공백이 없는 형식으로 사용하면 제대로 작동하지 않으며 오류가 발생할 수 있습니다.

현재 디렉토리와 그 하위 디렉토리의 모든 변경 사항을 Staging Area에 올바르게 추가하려면 항상 git add .와 같이 공백을 사용하시기 바랍니다.




첫번째 git init오류
git init 명령어는 로컬 디렉토리를 Git 저장소로 초기화하는 명령어입니다.

만약 이미 다른 프로젝트의 클론을 받아온 상태이고 그 안에 .git 디렉토리가 있을 경우, 새로운 저장소로 만들기 위해 git init을 실행할 필요는 없습니다.

이미 클론한 프로젝트의 디렉토리 자체가 로컬 저장소로 인식되고 있습니다.

⇒이 경우 git init안해도 됨. 오히려 이걸 해서 git이 또 생겨서 저렇게 오류난듯

dobby안에 있는 .git삭제하고 했다가 오류 대잔치나고 싹 다 삭제하고 다시 차근차근 해봄

20230803_180310.png

저장소에서 클론한 "DobbyIsFree" 폴더를 사용하고자 하는 것이기에 git init명령은 실행하지 않았으나,

git init는 안했지만 그럼에도 git add하면 오류가 났다

근데 아까랑은 다른, dobby 폴더 안에 다른 git 저장소가 중첩된 상태인데, 이 상태에서 원격저장소에 푸쉬하려하니 오류가 나는거

"dobby" 폴더 안에 있는 .git 디렉토리를 삭제해야 합니다. 이를 통해 중첩된 Git 저장소를 제거하고, "dobby" 폴더의 내용만 남기면 됩니다

(아까 삭제했다가 오류 대잔치….뒤에 곧 삭제하겠지만 여기서 도비 안이 git을 삭제했는데 아까 같은 오류가 안난걸보니 뭐 git init은 안하는게 맞긴한가보다,,)

20230803_180450.png

첫번째 경로 오류

$ cd /Desktop/Dobby Project/dobby
bash: cd: too many arguments

⇒공백이 포함된 경로로 이동할 때에는 경로를 큰 따옴표(")로 감싸주어야 합니다.

두번째 경로 오류
$ cd "/Desktop/Dobby Project"
bash: cd: /Desktop/Dobby Project: No such file or directory

⇒"Dobby Project" 폴더의 루트 디렉토리로 이동합니다. 경로를 정확하게 입력해주세요. 예를 들어, "Desktop/Dobby Project" 폴더가 바탕화면(Desktop)에 있는 경우 다음과 같이 입력하셔야 합니다
cd "/c/Users/leemi/Desktop/Dobby Project”

경로 오류는 더 이상 없었고, add .도 잘됨

20230803_180711.png

순서래도 push origin main을 했으나 또 오류

블로그에서 알려줬던

$ git commit -m "commit log"

$ git remote -v

$ git push origin master(main)

이 순서에서 remote -v를 안해서 그런건가? 물어봤는데

“기본적으로 git push 명령어를 사용하실 때, 반드시 -u 또는 --set-upstream 옵션을 사용하여 푸시해야 할 브랜치를 설정해주어야 합니다. 이렇게 하지 않으면 이후에 git push를 실행할 때마다 브랜치 이름을 명시해야 합니다.

하지만 최근 버전의 Git에서는 git push 명령에 -u 옵션을 주지 않더라도 자동으로 upstream 브랜치를 설정하는 기능이 추가되어서, 최초 한 번만 명시적으로 -u 옵션을 주지 않고 푸시하면 이후에는 자동으로 설정됩니다.

따라서, 명시적으로 git remote -v 명령을 사용하여 원격 저장소 주소를 확인하는 것은 더이상 필요하지 않습니다. 이미 git push를 사용하여 원격 저장소 주소를 설정했기 때문에 다음부터는 -u 옵션 없이 git push만 실행하셔도 원격 저장소로 푸시가 가능합니다.

$ git add .
$ git commit -m "commit log"
$ git push origin main

위의 명령어들을 순서대로 실행하시면, 변경 사항을 스테이징 영역에 추가하고 커밋을 생성한 후 원격 저장소인 "origin"의 "main" 브랜치로 푸시하게 됩니다. git remote -v 명령어는 이제 더이상 사용할 필요가 없습니다.”

그렇다함 ㅇㅇ 세상 좋아졌네

무튼

이 오류는 다른 원격 저장소나 다른 사용자가 같은 브랜치에 푸시를 해서 발생한 것으로 보입니다. 이럴 때에는 먼저 원격 저장소의 변경 사항을 로컬로 가져와서 통합한 후에 다시 푸시해야 합니다.

원격 저장소의 변경 사항을 로컬로 가져옵니다. git pull origin main 명령을 실행하면 됩니다. 이때, 만약 로컬에서 변경한 내용이 있을 경우에는 먼저 커밋을 진행하시는 것이 좋습니다.

git pull origin main

20230803_181131.png

얘 말대로 pull했는데 오류가 남ㅋ

해당 오류는 원격 저장소와 로컬 저장소의 commit 기록이 상이하여, 서로의 commit 기록을 병합할 수 없다는 내용입니다. 이런 경우 git pull 명령을 사용할 때 --allow-unrelated-histories 옵션을 추가하여 병합을 허용하면 됩니다.

다음과 같이 진행해보세요:

git pull origin main --allow-unrelated-histories

하니까 이상한 창 나옴

Git에서 병합(merge) 작업을 진행할 때, 커밋 메시지를 작성하도록 하는 에디터 창이라 함..

딱히 작성할 메시지는 없어서 Esc 키를 눌러 입력모드 빠져나온 후 :q! 입력해서 강제종료함(만약 메시지 쓸거면 i 눌러서 쓰고 Esc 키를 눌러:wq를 입력하여 Vim 에디터를 저장하고 종료 )

무튼 빠져나온 후

20230803_181518.png

마지막 단계인 push 했더니 제대로 됨

근데 git가보니 예전 버전ㅋ

하 씨발..아무래도 계정 문제인듯 하다



warning: adding embedded git repository

$ git add .
이건 뭐 별건 없고 .은 현재 디렉토리를 의미, add와 . 사이의 공백은 필수라 (공백은 git add 명령과 현재 디렉토리를 구분하는 역할)
유의해서 치면 됨

gpt 왈 '폴더 안에 있는 .git 디렉토리 삭제해야 함. 중첩된 Git 저장소 제거하고, 폴더의 내용만 남기면 됨'

too many arguments / No such file or directory

삭제하려고 보니 경로 오류
컴퓨터 이 자식은 참 유두리가 없다. 눈치챙겨

bash: cd: too many arguments 공백 포함된 경로엔 큰 따옴표로 감싸주기 /
No such file or directory 폴더가 바탕화면(Desktop)에 있는 경우, cd "/Desktop/Dobby Project"이 아니라 cd "/c/Users/leemi/Desktop/Project” 이런 식으로 써줘야함
무튼 찾아서 $ rm -rf "project/ .git"써서 지움

오류 해결 후 이제 끝이다 하면서 친 $ git push origin main
역시나 오류가ㅎ
다른 원격 저장소나 다른 사용자가 같은 브랜치에 푸시를 해서 발생한 것으로 보입니다. 이럴 때에는 먼저 원격 저장소의 변경 사항을 로컬로 가져와서 통합한 후에 다시 푸시해야 합니다.

git pull origin main
했는데 또 오류

뭐 대강 원격 저장소와 로컬 저장소의 commit 기록이 상이하여, 서로의 commit 기록을 병합할 수 없다는 내용
뒤에 명령어 더 추가해서
git pull origin main --allow-unrelated-histories
치니까 Git에서 병합(merge) 작업을 진행할 때, 커밋 메시지를 작성하도록 하는 에디터 창 나옴
Esc 키를 눌러 입력모드 빠져나온 후 :q! 입력해서 강제종료함(만약 메시지 쓸거면 i 눌러서 쓰고 Esc 키를 눌러:wq를 입력하여 Vim 에디터를 저장하고 종료 )

0개의 댓글