Git 정리 ( 오류, 사용법 )

알파카파카·2025년 2월 4일

git 사용법, 오류가 생길 때 마다 추가

----- Git 오류 -----

1. fatal: not a valid object name: 'master' 오류

git branch 를 해도 아무런 branch 가 안 나옴

- 해결 방법

첫 commit 을 안 해줘서 생김

git add . 를 한 후에 commit 을 해야할 것 같은데 그러면 오류나고, 그냥 commit을 하면 해결된다.

$ git commit -m "first commit"

2. CRLF 오류

git add 명령어 실행시 해당 오류가 나타났다.

- 해결 방법

운영체제마다 줄 바꿈 문자열이 다르기 때문에 생기는 현상으로 줄바꿈 방식을 지정해 준다면 문제 해결이 된다.

CR ( \r ) -> 커서를 맨 앞으로 이동
LF ( \n ) -> 커서를 한 줄 아래로 이동

LF ( \n )
유닉스 계열에서 사용 ( macOS, Linux )
"\n" 을 하나만 사용하여 줄 바꿈을 처리

CRLF
윈도우 계열에서 사용
"\r\n" 두 문자를 한 세트로 줄바꿈 처리

플랫폼 간의 협업을 위해서 방식을 지정해 주는 것

Windows 계열 명령어

$ git config core.autocrlf true
$ git config --global core.autocrlf true

macOS, Linux 계열 명령어

$ git config core.autocrlf input
$ git config --global core.autocrlf input

변환을 하지 않음

$ git config core.autocrlf false

3. detected dubious ownership in repository at 'path'

Git에서 의심스러운 저장소 환경을 감지했을 때 나타나는 경고,
저장소를 신뢰할 수 있는 디렉토리로 추가해야 작업을 허용합니다. 만약 디렉토리가 Git의 Safe Directory 목록에 없을 경우, 이 경고가 표시되며 작업을 임시로 차단한다.

따라서 오류와 함께 밑에 나오는 코드를 입력해주면 해당 경로가 신뢰할 수 있는 디렉토리에 추가가 되면서 문제가 해결된다.

$ git config --global --add safe.directory [경로]

4. .gitignore에 설정되어 있는데 변경된 대상에 들어가요

이런 일의 원인은 .gitignore 파일에 설정하기 전에, 아니면 직접 Github에 올려서 Git이 추적 중 일때 .gitignore 파일에 설정이 되어 있더라도 변경된다면 대상에 들어가게 되는 것이다.

추적 중인 파일 확인

$ git ls-files
혹은
$ git ls-files | grep '찾을 패턴'

추적 중인 파일 제거

$ git rm --cached '제거할 추적중인 파일 혹은 패턴'

5. fatal: Unencrypted HTTP is not supported for GitHub. Ensure the repository remote URL is using HTTPS.

이제 깃허브나 깃랩에서 HTTP는 지원하지 않아서 HTTPS 만을 사용한다.
내부 깃랩이라 SSL 무시하는 옵션을 넣어주면 되는데 해킹 공격의 대상이 되므로 추천하지 않음

- 해결방법

일회성 사용

GIT_SSL_NO_VERIFY=true git clone https://gitlab.example.com/user/repo.git

영구 설정

git config --global http.sslVerify false

특정 리포지토리만 적용

git config http.sslVerify false

----- Git 명령어 -----

0. 순서

git add .
git commit -m "커밋 메시지"
git push 

1. 원격 저장소 관련

(* 참고: 공개된 리포지토리라면 아무 인증 없이 실행되지만 비공개라면 인증이 별도 필요 )

가져오기 ( 처음 )

git clone [ 주소 ]

가져오기 ( clone 후, 업데이트가 있을 때 )

git pull

특정 브랜치만 가져오기

git clone -b [ 브랜치 명 ] [ 주소 ]

2. 브랜치 관리

브랜치 생성

git branch [ 생성할 브랜치 명 ]

브랜치 확인

git branch	로컬에 있는 브랜치만 확인
git branch -r	원격에 있는 브랜치만 확인
git branch -a	로컬, 원격의 브랜치 모두 확인

브랜치 변경

git checkout [ 변경할 브랜치 명 ]
git branch -t [원격 브랜치 명]	원격 브랜치를 가지고 오고 해당 브랜치로 변경

브랜치 삭제

git branch -D [ 삭제할 브랜치 이름 ]

브랜치 업데이트

브랜치(dev)를 로컬에서 만들고 push 하면 자동으로 업데이트 된다.
브랜치의 첫 푸쉬는 명시를 해주어야 한다.

git push [remote 원격 저장소 이름] [브랜치 이름]

브랜치 병합

현재 위치한 브랜치에서 다른 브랜치의 수정한 내용 병합

git merge [다른 브랜치 이름]

3. 리모트 관리

연결된 원격 저장소 확인

git remote -v

원격 저장소 추가 ( 생성 )

git remote add [리모트 주소 이름] [추가할 원격 저장소 주소]

원격 저장소 주소 변경

git remote set-url [리모트 주소 이름] [변경할 원격 저장소 주소]

원격 저장소 삭제

git remote remove [리모트 주소 이름]

원격 저장소 이름 변경

git remote rename [기존 이름] [변경할 이름]

원격 저장소 업데이트

원격 저장소를 명시하고 브랜치가 없을때

git branch update

4. Git 계정 관리

계정 확인

# git에 저장된 이름 확인
git config user.name

# git에 저장된 이메일 확인
git config user.email

# 모두 확인 ( 위에 있는게 global, 밑에 있는게 local 계정 )
git config --list

계정 설정

# 전역으로 변경
git config --global user.name "설정할 이름"
git config --global user.email "설정할 이메일"


# 로컬만 변경 ( ** 전역으로 설정된 계정이 있으면 그걸 우선 참조 ** )
git config user.name "설정할 이름"
git config user.email "설정할 이메일"

5. log 관리

# git commit 로그 목록
git log

#git 로그 지우기
git reset HEAD~1 	# 이렇게 하면 최신 커밋 만 지워지고 바로 직전이 최근 커밋이 된다.
# git reset HEAD~2 를 하면 최신 커밋과 직전 커밋도 지워진다. !!! 주의해야 함 !!!

#git 로그 덮어씌우기
git push --force	# 커밋 히스토리가 달라서 그냥 push를 하면 오류가 난다.

6.

profile
타닥,,, 타다닥,,,,,,,

0개의 댓글