Git 사용 시나리오별로 해결 방법을 연구 합니다.

Git Branch Log를 그래픽으로 보고 싶어요.

$ git log --branches --graph --decorate --oneline

Git Add 를 취소하고 싶어요.

  • git status
  • git restore --staged (filename)

Git Commit을 취소하고 싶어요.

reset 옵션
–soft : index 보존(add한 상태, staged 상태), 워킹 디렉터리의 파일 보존. 즉 모두 보존.
–mixed : index 취소(add하기 전 상태, unstaged 상태), 워킹 디렉터리의 파일 보존 (기본 옵션)
–hard : index 취소(add하기 전 상태, unstaged 상태), 워킹 디렉터리의 파일 삭제. 즉 모두 취소.

  • commit은 취소하고 파일은 stage상태로
    • git reset --soft HEAD^
  • commit은 취소하고 파일은 unstage상태로 (default)
    • git reset --mixed HEAD^
    • git reset HEAD^
  • 마지막2개 commit취소
    • git reset HEAD~2
  • commit은 취소하고  해당파일을 unstage상태로 워킹디렉터리에서 삭제
    • git reset --hard HEAD^

Git Push를 취소하고 싶어요. 

reset 옵션
–soft : index 보존(add한 상태, staged 상태), 워킹 디렉터리의 파일 보존. 즉 모두 보존.
–mixed : index 취소(add하기 전 상태, unstaged 상태), 워킹 디렉터리의 파일 보존 (기본 옵션)
–hard : index 취소(add하기 전 상태, unstaged 상태), 워킹 디렉터리의 파일 삭제. 즉 모두 취소.

  1. 워킹 디렉토리의 commit을 되돌린다.
    1. git reset HEAD^ #최근의 커밋을 취소함
    2. git reset [commit id] #원하는 시점으로 워킹디렉토리를 되돌린다.
  2. 돌려진 상태에서 다시  commit한다.
    1. git commit -m "commit message"
  3. 원격저장소에 강제로 push 한다.
    1. git push origin branchname -f
    2. git push origin branchname --force
    3. git push origin +branchname

Git commit N개를 합치고 싶어요.

$ git rebase -i HEAD~2

pick 004644d first commit

pick ae53bdf second commit --> squesh ae53bdf second commit


:wq

Patch 파일을 만들고 싶어요.

  • commit-id에서부터 현재까지의 commit을 각patch파일로 생성 (commit 마다 patch파일 생성)
    • git format-patch [commit-id]
    • git format-patch -2

전달받은 Patch파일을 commit하고 싶어요.

  • git am [patch-filename]

Commit하기전 파일을 비교해서(diff) Patch 파일을 만들고 싶어요.

  • git diff > patch-filename

두 Branch를 합치고 싶어요.

  • issue1 브렌치를 master 브랜치로 병합
    • git checkout master
    • git merge issue1
  • merge 확인
    • git log --branches --graph --decorate --oneline

개발을 하고 있었는데, 앗 새로운 Branch에서 작업 하고 싶어요.

  • Commit하기전 개발하고 있던 파일들이 새로운 브랜치로 옮겨 집니다.
    • git checkout -b new-branch

개발을 하고 commit을 했는데, 새로운 branch로 작업내용을 옮기고 싶어요.

  • 새로운 Branch를 만들고, 이전 branch의 작업내용을 reset합니다.
    • git checkout -b new-branch
    • git checkout develop
    • git reset --hard HEAD~1

Git Commit Global 계정을 설정/변경/삭제 하고 싶어요.

## 설정된 정보 보기
$ git config --list

http.sslbackend=openssl
http.sslcainfo=C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
diff.astextplain.textconv=astextplain
core.autocrlf=true
core.fscache=true
core.symlinks=false
user.name=Sanse
user.email=sooabia@gmail.com
core.editor="C:\Users\Sanse\AppData\Local\Programs\Microsoft VS Code\Code.exe" --waitfilter.lfs.process=git-lfs filter-process
filter.lfs.required=true
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
push.default=simple

## 설정/변경 하기
$ git config --global user.name "Sansae"
$ git config --global user.email sooabia@gmail.com

## 삭제 하기
$git config --unset --global user.name
$git config --unset --global user.email

Git Commit Message를 수정하고 싶어요.

## 방금전 Commit한 메세지 수정
$ git commit --amend -m "{변경할 메시지}"


## 과거 Commit한 메세지 수정 (예: CommitID-3만 수정)
$ git log
CommitID-5
CommitID-4
CommitID-3
CommitID-2
CommitID-1

$ git rebase -i {CommitID-3}
------ EDITER --------
pick CommitID-5
pick CommitID-4
pick CommitID-3
==> 
pick CommitID-5-message
pick CommitID-4-message
edit CommitID-3-message
------ //EDITER --------
# SAVE

# Git 설명이 아래와 같이 출력되요.
You can amend the commit now, with
  git commit --amend
Once you are satisfied with your changes, run
  git rebase --continue


$ git commit --amend
------ EDITER --------
CommitID-3-message --> {변경할 Commit 메세지}

------ //EDITER --------
# SAVE

$ git rebase --continue
Successfully rebased and updated refs/heads/develop.

Commit 한 Author을 변경하고 싶어요.

## 방금 Commit한 Author 변경하기
$ git commit --amend --author="{변경할이름}<변경할이메일>"


## 과전에 Commit한 Author 변경하기 (예: CommitID-3의 Author수정)
$ git log
CommitID-5
CommitID-4
CommitID-3
CommitID-2
CommitID-1

$ git rebase -i {CommitID-3}
------ EDITER --------
pick CommitID-5
pick CommitID-4
pick CommitID-3
==> 
pick CommitID-5-message
pick CommitID-4-message
edit CommitID-3-message
------ //EDITER --------
# SAVE

# Git 설명이 아래와 같이 출력되요.
You can amend the commit now, with
  git commit --amend
Once you are satisfied with your changes, run
  git rebase --continue


$ git commit --amend --author="{변경할이름}<변경할이메일>"

$ git rebase --continue
Successfully rebased and updated refs/heads/develop.

Git Password를 저장하고 싶어요.

$ git config (--global) credential.helper store
$ git pull
# password를 입력하면 저장됨.
  • No labels