Web Programming/개발환경

[Git] 초간단 bash명령어 정리

쑤기c 2021. 10. 7. 10:38

git config (user정보)

git clone (git site에서 clone url copy)

git branch -t origin/내브랜치 (개인용 branch사용하는 경우, remote에서 생성후 local로 당기기)

git branch -vv  (branch list 확인, remote 매핑 브랜치도 확인)

 

* Git 설치 및 커맨드창 실행
Git 설치:> Git-2.x.x-64.exe 설치 (/bin/bash.exe + git.exe + sh.exe 포함)
git_cmd창실행:> 탐색기에서 생성한 /workspace로 이동해서 Right-click > [Git Bash Here] 실행
└ 하면 command창이 실행됨.

config 확인:> git config --list
config 추가:> git config --global user.email "계정(보통 이메일사용)"
config 추가:> git config --global user.name "사용자명"
config 설정:> git config core.quotepath false (파일경로가 깨짐 방지, 이스케이프 문자 변환처리 OFF)

# git add . 했을때, [LF will be replaced by CRLF the next time Git touches it] warning 표시:
> git config --global core.autocrlf true (OS에 따라 자동으로 LF or CRLF 변환)
  > git config --global core.safecrlf false (위 설정해도 나오는 warning 비표시 처리)

* Git branch 환경 
① 테스트용-배포용-branch = [dev]라는 가정
② remote/myBranch를 만들어서 작업한다.
③ 내 작업이 완료되면 remote/myBranch에 commit&push하고 [dev]에 merge한다.

repository생성&복사:> git clone http://ip:port/xxx.git ./prj-dir-name
├[로컬저장소]가 ./prj-dir-name 폴더가 됨.
├ git init (로컬저장소를 빈 Git 저장소로 초기화)
├ git remote add origin [URL] (로컬저장소에 원격 저장소(origin)를 추가)
└ git fetch origin master (원격 저장소의 master 브랜치 데이터를 로컬에 가져와 저장)
//fetch는 데이터를 로컬에 가져오기만 하고,
//pull은 원격 저장소의 내용을 가져와 자동으로 병합(merge)작업을 한다.

branch 목록:>git branch -a (-a는 모든 branch list)
* dev

branch 생성& git checkout -b [NewBranchName]
├ git branch [NewBranchName]   (branch 생성 )
└ git checkout [NewBranchName] ([NewBranchName] branch를 사용)

▼리모트 저장소 가져오기
git checkout -t origin/[리모트branch]   (-t: 브랜치 생성 및 가져오기)
└ branch를 못찾는 에러시 git fetch 후 재시도
git branch -vv (branch 목록조회, -v:마지막 커밋 메시지+현재가리키는 upstream-branch 표시

git branch --set-upstream-to (local저장소생성후 remote 저장소 향하도록 하기)

▼리모트 수정된내역 로컬로 업데이트
dev변경소스-업데이트①branch이동:> git checkout [NewBranchName]
리모트 저장소 정보 동기화:> git fetch origin dev
dev변경소스-업데이트②pull:> git pull origin dev 

dev변경소스-업데이트①branch이동:> git checkout dev
현재브랜치(dev)←[NewBranchName]를병합:> git merge [NewBranchName]

▼리모트 내용으로 복원
git reset --hard HEAD   (수정사항 무시하고 HEAD(또는 commit-id)로 이동)
git pull origin dev   (리모트/dev 브랜치 내용 가져오기)

▼삭제된 파일 가져오기
git checkout "대상파일명"   (파일 삭제후 실행)

..소스수정.. (현재branch=[NewBranchName])

▼commit&push
commit:> git commit -a -m "커밋코멘트"
├ git add .  (.는 변경된 모든 파일 의미 or 단건은 [xxx.java]로 파일명 지정)
└ git commit -m "커밋코멘트"
원격[NewBranchName]브랜치에push:> git push origin [NewBranchName]

▼git add 취소하기
>git restore HEAD [파일명] ([파일명]이 없으면 add한 모든 파일 취소)
또는
>git restore --staged [파일명] 

▼수정한 소스 마지막 커밋(or 체크아웃)으로 되돌리기
1)파일단위
$ git checkout -- {파일명}
2)전체
$ git reset --hard HEAD

▼ reset등을 수행하다가 untracked files이 쌓인경우
$ git clecn -f (디렉토리도 clean: -fd)
※주의: 작업중인 파일인 경우 백업할 것!

참고: https://hellvelopment.tistory.com/30


* 반복사용
git fetch --all
git checkout <개발공통 브랜치>
git pull
...(충돌시 메시지 출력되면 충돌파일: 로컬백업→restore→다시 git pull)...
git checkout <내 브랜치>
git merge dev
git push
---▼작업한것 커밋
git status
git add .
git commit -m "커밋메시지"
git push
---▼리모트: 브랜치 머지
<remote에서 개발공통에 내 브랜치 merge>
---▼로컬을 리모트브랜치와 동기화
git checkout <개발공통 브랜치>
git fetch --all
git pull
git checkout <내 브랜치>
git merge dev
git push

 

▼git log 조회

$ git show 0387827984a60338e77250716882d24ee7401263 --name-status
commit 0387827984a60338e77250716882d24ee7401263
Author: HAE\12223344 <aaa@hahaha.com>
Date:   Thu Jul 20 12:40:12 2023 +0900

    결제처리 우선순위 로직 수정

M       deploy/{site}/src/main/resources/sys-adm-kkk.properties
A       src/main/java/com/{sys}/adm/api/cmn/service/CmnService.java
M       pom.xml
 

 

 

반응형