git 드디어 문제 해결. push 오류 - 메일주소, 계정연동, cd / 잘못 올린 파일 삭제
git 에서 스터디 팀 repository 에 파일을 업로드 하는것과, 이미 올라간 파일을 삭제하는데 있어서 해결이 나지 않았었다.
아무리 구글링을 해봐도 답을 모르겟어서, 스터디 팀장님께 양해를 구하고 다시 repository 를 직접 생성해서 시작해 보았다.
여전히 문제가 발생하였다.
일단 팀장님은 source control 기능을 이용해서 push 하엿고,
나의 경우에는 source control 기능에 아무것도 생성되지 않아서, 터미널로 하게 되었다.
(같이 고민해 주신 스터디팀장님,, 감사해여,,,,,,,,ㅠㅠ)
발견한 문제들은 아래와 같다.
1. git repository 를 공유받을때, 내가 git에 가입되어 있던 메일 주소와, 공유받을때 입력한 메일 주소가 달랐다.
--->> 내가 git에 가입되어 있던 메일 주소로 다시 공유 실행 후 repository 새로 생성.
2. vs code 에서 프로필 사진을 눌러보면 계정 연동사항을 확인할 수 있는데, 어느새인가 풀렷다.
--->> 다시 연동 진행. f1은 안먹었는데, 알고보니 자동으로 연결시켜주는 기능을 가지고 있어서, git에 로그인 한 것과 연동이 바로 됨.
3. git remote -v 를 했을때 이전에 지정되어 있던 repository의 설정을 유지하고 있었고,
현재 새로 생성된 repository 와는 연결되어 있지 않았다.
앞부분만 살펴보고 origin ?? 맞는데??? 이렇게 넘어가버린,.,,,,,,,, 아주 아주 아주 멍청한 ,.,,,,,,,,,(나쁜말 심한말 )
--->>> 이전 버전으로 연결된 원격 저장소와 연결고리를 끊고
현재 새로 만들고 파일을 올리려고 하는 그 원격저장소 와 연결고리를 맺었다.
■ git remote rm origin 이건 지금 원격 저장소와 연결된거를 삭제 하라는 의미
■ git remote add origin [저장할 repository 주소] : 원격 저장소의 주소를 이용해 로컬 저장소와 원격 저장소 연결
(여기서 주소는 git 에서 code -> local -> https -> url 복사)
4. 그럼에도 불구하고 git add . 으로 파일을 업로드 하면 폴더 단위로 들어가 지고, 심지어 그 폴더는 git사이트 상에서 열리지 않았다. git add 파일명 으로 진행하면 오류가 낫다. (fatal: 'eunji.txt' 경로명세가 어떤 파일과도 일치하지 않습니다) 왜???
--->>> 문제는 cd 설정이였다. 버전관리를 하기위한 폴더를 어디로 지정 저장할 것인가 인데, 내가 저장하고 싶은 파일들의 상위 폴더만 저장되어 버렸다.
■ cd 저장 하고싶은 파일들의 상위 폴더명 을 입력
다시 진행해보니 문제,,, 해결,,,,,,,,
Git 다시 정리
Git에 잘못 올린 파일 삭제
1. 로컬 디렉토리와 github에서 모두 삭제하기
git rm {디렉토리명 또는 파일명}
git commit -m "delete source"
git push
2. 로컬 디렉토리에는 유지하고 github에서만 삭제하기
git rm --cached -r {디렉토리명 또는 파일명}
git commit -m "delete source"
git push
프로젝트에서 github에 소스코드를 push 할 때에는
기본적으로 .gitignore 파일을 생성해서 불필요한 디렉토리나 파일은 push 되지 않도록 한다.
예를 들어 빌드시 마다 갱신되는 classpath 가 대표적.
명령어 정리
pwd
현재 작업 중인 디렉토리의 이름을 출력하는 명령어.
cd [버전관리할 폴더이름]
버전 관리를 하기 위한 폴더를 어디에 저장할지 이동하는 명령어. Ex) cd 버전관리할 폴더 이름
cat [파일명.확장자]
파일의 내용이 잘 입력되었는지 확인할 때 이 명령어를 사용.
git status
현재 상태 조회.
git remote -v
이건 지금 연결되어있는 원격저장소를 확인해줘 라는 의미.
(**확인 할때 나오는 결과값의 뒷부분 상세주소를 유심히 살펴볼것! 앞에만 보지 말것**)
git remote rm origin
이건 지금 원격 저장소와 연결된거를 삭제 하라는 의미
git branch
이건 현재 브랜치의 이름을 확인해 달라는 명령어.
git config --global init.defaultBranch [브랜치 이름]
이건 브랜치 기본(default)이름 설정 하는 명령어.
저장소를 만들때마다 브랜치 이름을 변경하기 귀찮으니, 항상 main으로 이름짓도록 브랜치 이름란에 넣어 설정할 수 있다.
git rm --cached -r .
이건 add한 파일 모두를 취소하겠다는 명령어.
git rm --cached [파일]
이건 특정한 파일만 add를 취소하겠다는 명령어.
sudo rm -r .git
이건 (Mac 기준으로) .init 파일을 삭제하라는 명령어.
git push -u origin master
-u 옵션을 적어줌으로 앞으로 master 라는 현재 브랜치를 자동으로 origin 이라는 원격저장소의 master 브랜치로 연결하라는 의미.
간단히 git push 만 입력하여 반영하거나 git pull 을 입력할 때 origin이라는 원격저장소의 master 브랜치를 로컬 저장소의 master 브랜치로 merge 할수 있게 해주겠다는 의미이다.
git branch [새로운 브렌치이름] [분기할 브렌치이름]
새로운 브렌치 생성. 만약 devel Branch를 master Branch로부터 분기해오고 싶다면 아래와 같은 명령을 수행하면 된다.
git checkout [이동할 브렌치 이름]
현재 Branch에서 다른 Branch로 이동
Git 에 파일 올리기
- git init : 로컬 저장소 파일 생성 및 초기화. 가장 먼저 할것. 여기서 .git 파일이 생성된다. '.'으로 시작하는 폴더는 숨김처리되니 보이지는 않는다.
- git remote add origin [저장할 repository 주소] : 원격 저장소의 주소를 이용해 로컬 저장소와 원격 저장소 연결
- git branch -m master main : master branch를 main branch 라고 이름을 바꿔줘. (Git 저장소의 기본 branch 이름은 main, local 저장소의 기본 branch 이름은 master 이라고 되어있기 때문에, 이름을 먼저 바꿔준다.)
- **클론코딩이 아닐 경우** git pull origin [브랜치 이름] : 원격 저장소에 README.md 파일이 있다면 가져오는 명령어. (저장소 만들 때 추가하지 않은 경우는 제외)
- git status : 현재 버전 상태 확인. Tracked 혹은 untracked 인지 확인 가능하다.
- git add . : 모든 변경사항을 staging area에 올린다. (특정한 파일만 staging area에 올리려면, git add 파일명 )
- git commit -m "commit message" : 파일을 커밋한다. commit은 git log를 입력했을때, 나의 변경사항들에 대해 스탬프를 찍힌 기록들을 보여준다고 생각하면 쉽게 이해가 된다. git commit -m [설명] 이라서 git commit -m "Initial commit" 이렇게 쓸 수도 있다.
- git push origin 브렌치이름 : 로컬 저장소에서 원격저장소로 올리기.
이런 에러메세지??
warning: LF will be replaced by CRLF in test.html.
The file will have its original line endings in your working directory
발생 이유
맥 또는 리눅스를 쓰는 개발자와 윈도우 쓰는 개발자가 Git으로 협업할 때 발생하는 Whitespace 에러다. 유닉스 시스템에서는 한 줄의 끝이 LF(Line Feed)로 이루어지는 반면, 윈도우에서는 줄 하나가 CR(Carriage Return)와 LF(Line Feed), 즉 CRLF로 이루어지기 때문이다. 따라서 어느 한 쪽을 선택할지 Git에게 혼란이 온 것이다.
해결은??
Git은 똑똑해서 이를 자동 변환해주는 core.autocrlf 라는 기능을 가지고 있는데, 이 기능을 켜주기만 하면 된다.
맥의 경우는 이렇다.
git config --global core.autocrlf true input
시스템 전체가 아닌 해당 프로젝트에만 적용하고 싶다면 —global 을 빼주면 된다.
참고블로그
추가로 맥과 윈도우 간의 깃허브 협업 문제에 관해 좋은 포스트가 있어서 붙여논다.
https://blog.jaeyoon.io/2018/01/git-crlf.html
Git 에러 CRLF will be replaced by LF (혹은 반대) 핸들링하는 방법
맥/리눅스 이용 개발자와 윈도우 개발자가 협업할 때 왜 발생할까? 터미널에 git 명령어를 입력했는데 다음과 같은 에러가 뜨는 경우가 있다: ```bash warning: CRLF will be replaced by LF in some/file
blog.jaeyoon.io
https://shortcuts.tistory.com/m/8
[총정리] 깃허브(Github) 파일 업로드, 파일 올리기 (git bash)
요약 //저장소 생성 및 연결 $ git init $ git remote add origin [원격저장소 주소] $ git branch -m master main //파일 업로드 $ git pull (또는 git pull origin [브랜치 이름]) $ git add . $ git commit -m "commit message" $ git push (
shortcuts.tistory.com
이분의 게시글에서 정말 많은 도움을 얻었다.