윈도우 cmd에서 Git 사용법 / Git 명령어 정리 / Git 에러 해결

Git Clone이나 간단한 커밋 시에는 cmd에서 명령어로 하는 것이 빠를 수 있습니다.
소스 비교나 체리픽은 소스트리, IntelliJ 같은 GUI 툴 사용이 훨씬 편합니다.


윈도우 cmd에서 Git 사용법

Git 원격 브랜치 소스 가져오기

Default 브랜치 복제

git clone "https://Git주소"

특정 브랜치 복제

git clone -b 브랜치명 "https://Git주소"

Git Clone 시 에러

unable to access 'https://git-codecommit.ap-northeast-2.amazonaws.com/v1/repos/프로젝트명/': The requested URL returned error: 403

AWS Codecommit Git을 클론할 때 계정 인증이 되지 않아 발생하는 에러입니다.

Git 계정 인증

Clone 시 뜨는 팝업에 입력

사용자이름 Git 계정명 입력
암호 Git 계정 비밀번호 입력

Windows 보안 (Git Credential Manager) 팝업에 계정 정보를 입력하면 윈도우 자격 증명에 저장되는 것이기 때문에, 수동으로 직접 등록해도 됩니다.

윈도우 자격 증명 등록 방법
자격 증명 관리자 검색 > Windows 자격 증명 선택 > 일반 자격 증명 추가 >

인터넷 또는 네트워크 주소 git:https://Git주소 입력
사용자이름 Git 계정명 입력
암호 Git 계정 비밀번호 입력

Git 유저명, 이메일 관리

commit 시 히스토리에 남을 유저명을 설정할 수 있습니다.

설정된 Git 유저명, 이메일 확인

git config user.name
git config user.email

Git 유저명, 이메일 설정

git config --gloabal user.name "이름"
git config --gloabla user.email	"이메일주소"

로컬 소스로 덮어쓰기 push

git init                         // 프로젝트에 git 폴더 생성
git add .                        // 스테이징 영역에 올리기
git commit -m "커밋메세지"          // 로컬 저장소(.git)에 저장
git remote add origin "Git주소"     // origin 별칭으로 원격 저장소 추가
git push origin 브랜치명 --force   // 원격 저장소 소스 삭제하고 로컬 저장소 소스로 덮어쓰기 push

처음 생성한 Git 저장소에 신규 소스를 올릴 때 주로 사용합니다.

현재 경로에 연결된 원격 저장소 주소 확인

git remote -v

원격 저장소 소스 내려받기

git pull

현재 브랜치 원격 저장소의 소스를 로컬 저장소에 내려받습니다.

작업한 로컬 소스 올리기

git add .                   // 스테이징 영역에 올리기
git status                  // 스테이징 목록 확인
git commit -m "커밋메세지"     // 로컬 저장소(.git)에 저장
git push origin main        // 원격 저장소에 저장

add 목록에서 제외 방법

git reset HEAD (전체 제외)
git reset HEAD 파일명 (파일 1개 제외)

git push 시 에러

 ! [rejected]        main -> main (non-fast-forward)
error: failed to push some refs to 'https://Git주소'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

git pull을 받고 다시 push하면 됩니다.

.이 들어간 파일 git add 시 에러

warning: LF will be replaced by CRLF in assets/3rdparty/instantsearch.js/2.3.3/instantsearch.min.js.
The file will have its original line endings in your working directory

파일명에 .이 들어가는 신규 파일 업로드 후 git add . 시 발생하는 에러입니다.
윈도우 cmd에서는 아래의 명령어 입력 후 다시 시도하면 됩니다.

git config core.autocrlf true

Git 커밋 내역 확인

git log -N(보고 싶은 커밋 수)

git log는 Q를 누르면 나가집니다.

마지막 커밋 삭제

git reset HEAD~1

실수로 올린 커밋 1개만 되돌리고 싶을 때 사용합니다.

브랜치 이동

git checkout 브랜치명

로컬 저장소의 소스를 작업중 폴더에 덮어씌웁니다.

브랜치 강제 이동

git checkout -f 브랜치명

로컬 저장소의 소스를 작업중 폴더에 덮어씌우며, 현재 작업중인 변경사항을 모두 버리고 강제로 이동합니다.

현재 브랜치 확인

git branch

현재 위치하고 있는 작업중 브랜치를 확인할 수 있습니다.

브랜치 삭제

git branch -D 브랜치명

다른 브랜치로 체크아웃 후 실행하면 충돌 무시하고 로컬 브랜치가 강제 삭제 됩니다.

브랜치 병합

현재 브랜치로 덮어쓰기 병합

git merge -Xours 다른브랜치명

현재 브랜치에 다른 브랜치 소스를 병합합니다.
충돌 발생 시, chekout 하여 위치한 현재 브랜치의 소스로 덮어씌웁니다.

다른 브랜치로 덮어쓰기 병합

git merge -Xtheirs 다른브랜치명

충돌 발생 시, 다른 브랜치의 소스로 덮어씌우며 병합합니다.
운영서버 반영용 브랜치에 개발 완료 브랜치를 덮어씌워 최종 반영할 때 사용할 수 있습니다.
개발용 브랜치, 개발서버 반영용 브랜치가 따로 있다면, 개발용 브랜치 먼저 병합 후 개발서버 반영용 브랜치를 병합해야 코드 누락에 따른 오류가 나지 않습니다.

Git 커밋 메세지 검색

git log --grep "검색어"

방향키 위/아래로 이동할 수 있으며, q를 누르면 빠져나올 수 있습니다.


Git 변경사항 폴더 이동 방법

프로젝트 환경을 옮기는 경우, 커밋하지 않은 작업중 소스들을 patch 파일으로 생성하여 옮기면 좋습니다.

Git patch 파일 생성

cd D:\기존프로젝트폴더경로
git diff --cached > changes.patch

신규 파일 등 옮기려는 모든 파일을 스테이징 후, 위 명령어로 패치 파일을 생성합니다.
기존 프로젝트 폴더 경로에서 마지막 커밋과 달라진 스테이징 변경사항들이 patch 파일로 생성됩니다.

공백 관련 경고 미표시 설정

git config --global apply.whitespace nowarn

위 설정을 하지 않으면 패치 파일 적용 시 공백 관련 경고가 표시될 수 있습니다.

공백 관련 경고 예시

changes.patch:14: trailing whitespace.

Git patch 파일 적용

cd D:\신규프로젝트폴더경로
git apply changes.patch

신규 프로젝트 폴더 안에 changes.patch 파일을 옮기고, apply 하여 적용합니다.
이미 사용한 patch 파일은 삭제하는 것이 좋습니다.


Git 에러 해결

push 시 에러 해결

병합이 거부되는 경우

refusing to merge unrelated histories

위와 같은 에러가 나오는 경우, 아래의 명령어로 pull 받고 push 하면 됩니다.

git pull origin branch명 --allow-unrelated-histories

HEAD가 분리된 경우

git branch temp
git checkout temp
git branch -f 브랜치명 temp (temp를 기준으로 브랜치 강제 생성)
git checkout 브랜치명
git branch -d temp

Git commit 후 push가 안되고, 재 commit도 안되고, git status 시 HEAD detached from 해시명이 나오는 경우에 위 방법으로 브랜치를 다시 생성해서 push 하면 됩니다.


Commit 제외 폴더 및 파일 설정

프로젝트 폴더 안의 .gitignore 파일에 명시하면 됩니다.

Leave a comment