윈도우 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 주소 확인
git remote -v
Git 원격 저장소 주소를 알 수 있습니다.
원격 저장소 소스 내려받기
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 reset --soft HEAD~1
soft 옵션을 사용하면, 커밋 했던 작업중 소스를 스테이징 상태로 유지하면서 커밋을 취소할 수 있습니다.
브랜치 이동
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