[General]Git

cho yunsu·2021년 7월 28일
0
  • git 설정하기
    git config --global core.editor "code --wait"
    git config --global -e

  • git 명령어 다음 속성값 확인하기
    git 명령어(ex.config) --h

  • 초기화 및 삭제
    git init
    rm -rf .git

* 명령어 1
echo hello world! > a.txt
: hellow world! 문자열을 담은 a.txt를 생성.

touch a.txt 파일 생성.

echo hihi >> a.txt
: hihi 문자열을 a.txt에 추가.
rm a.txt : 삭제

cat a.txt : a.txt파일을 읽어옴.
  • git rm --cached a.txt
    : stage에 있는 것을 working directory로.

  • git add . vs git add
    : add . 은 삭제된 파일을 stage에서도 삭제함. 반면 add
    은 삭제된 파일은 더이상 반영하지 않고 stage에 기존것을 남겨둠.

  • git diff : working directory의 달라진것 비교.
    git diff --staged : stage의 달라진것 비교.

  • 명령어 rm 과 git rm의 차이(mv도 똑같이 적용됨)
    : 그냥 rm의 경우 stage에 반영이 안됨. git add .를 해줘야함
    git rm의 경우 한번에 됨.

* 명령어2
rm 과 rm -rf의 차이
: 전자는 파일, 후자는 폴더자체(안의파일포함) 삭제
-r는 폴더싹지우렴... -f는 강제로..
  • HEAD~1 : 현재 가르기고 있는 파일의 이전파일

  • 깃 로그 설정
    log --graph --all --pretty=format:""

  • git log --grep="검색어"
    커밋메세지에 검색어 포함된 것만 로그 검색.

  • git log -S "검색어"
    변경내용에 검색어가 있는 로그 검색.

  • git show hash
    커밋내용 보기

  • git tag : 북마크 기능
    git tag 북마크제목 hash

branch

  • git checkout -b 브랜치이름 : 브랜치 생성하고 이동
  • git branch -d 브랜치이름 : 삭제
  • git push origin --delete 브랜치이름 : 깃허브 브랜치 삭제
  • git branch --move 예전이름 새로운이름 : 브랜치 이름변경
  • git push --set-upstream origin 새로운이름 : 깃허브 반영
  • git merge 브랜치이름 : fast-foward merge.. 머지 이력이 남지 않음. 디폴트로 ff, 불가능 시 three-way

fast-foward merge를 원치 않을 때

  • git merge --no-ff 브랜치이름

참고) 머지 이후 브랜치는 삭제해주는게 깔끔.

Three-way-merge란? 브랜치가 만들어 지고 원래의 master에 다른 커밋이 만들어지면 fast-foward는 불가능.

git rebase는 언제 쓰는 것일까? 로컬 또는 내 혼자하는 브랜치에서만 써는게 좋음. 아니면 merge conflict 발생할 수 있음.
fast-foward merge가 불가능한 상황에서 브랜치의 포인터를 다시 최신 master로 재설정함으로써 fast-forward를 가능하게 함.

  • git rebase --onto master [branch1][branch1에서 파생된 branch2] : branch2를 master로 리베이스함. 이후 ff merge하면 됨.

  • git cherry-pick hash : 브랜치의 특정 커밋만 복사해서 가져옴.

취소하기

  • git restore --staged .
    = git reset HEAD .
    =git rm --cached .
    : unstaging

  • git restore . : unmodifying

  • git reset hash : 특정 커밋으로 초기화
    디폴트는 --mixed : working directory에 남겨둠.
    --soft : stage에 남겨둠.
    --hard : 완전 삭제.

  • git revert hash : restore, reset과 달리 커밋이 만들어지므로 이미 서버에 올라간 경우 사용함.

Rebase -i : 이후 커밋들이 새로 만들어지므로 서버에 올라간 것에 사용하는 것은 조심.

  • 하나의 커밋을 두개로 나누기 : rebase -i 중 edit 사용.
  • 여러개 커밋을 하나로 합치기 : rebase -i 중 squash 사용.
profile
Growing Developer!!

0개의 댓글