본문 바로가기
반응형

Git47

💻 [Git 깃] 영역별(add, commit, push) 되돌리기 add 취소 git reset HEAD {file명} • 파일명이 없는 경우 add한 파일 전체 취소 • UnStaged (add 전) 상태로 변경하는 것으로 내용 자체는 남아 있다. • commit 상태 및 내용은 변하지 않는다. commit 취소 git reset HEAD^ • commit 취소하고 변경내역을 unstaged 상태 (add 전)로 변경 내용 자체는 삭제되지 않고 파일에 남아 있다. (--mixed 옵션과 동일) * add되어 있는 변경내역도 add "전" 상태로 변경 • --soft 옵션 staged 상태 (add 후)로 commit 취소 git reset --soft HEAD^ • --hard 옵션 commit 취소와 함께 변경 내역 자체를 삭제 git reset --hard HEA.. 2022. 8. 2.
[Git 깃] git revert reset과 마찬가지로 과거로 되돌리기 위한 명령어다. reset과 revert 차이는 실행 후 commit 이력이 남는가? revert는 reset과 달리 commit을 삭제하지 않고 추가한다. git revert {Commit ID} 📍 reset 📍 revert 예시 git log 확인 결과 A → B → C → D commit 이 존재한다. B Commit 수정이 필요한 것을 확인하여 해당 변경내용만 없애고 싶다. 하지만 이미 push 해서 다른 팀원들이 사용하고 있을 수 있어서 commit 이력을 없애기는 부담스럽다. revert로 인해 B commit 당시 변경 내역만 사라진다. (C, D 변경내용 변화 X) 기존 B Commit을 포함해 전체 commit 내역은 그대로 남아있고, revert.. 2022. 7. 31.
[Git 깃] git reset git reset 과거 시점으로 되돌리는 방법으로 크게 3가지 옵션이 있다. * reset 후에는 이전으로 되돌리 수 없으므로 유의해야 한다. git reset {File or Commit ID} • add 된 파일을 unstaged 상태(add 하기 전)로 되돌린다. • 변경 내역 자체는 파일에 남아 있다. --soft • Staging Area 상태로 돌린다. (add 한 상태이면서 commit 하기 전 상태) --mixed (default) • Wokring Directory 상태로 놓는다 (add 하기 전 상태) --hard • 추적(tracked) 되고 있는 파일 변경내역 삭제 • Working Directory에서 삭제하는 것으로 파일 변경 내역을 완전히 삭제하는 것이다. • Untracked.. 2022. 7. 29.
[Git 깃] git rebase 위험성 Rebase 위험성 Rebase는 Merge 보다 commit history를 깔끔하게 해서 유용하지만 rebase 과정에서 생겨나는 커밋은 내용은 같지만 새로운 커밋이기에 다른 사람과 협업하는 경우 곤란해질 수 있다. [Git 깃] git rebase Rebase란? • rebase는 "re" + "base" 로 재배치 하는 것이다. • merge와 비슷한 개념이지만 commit history 결과 차이가 있다. rebase가 commit history 깔끔하게 정리해주는 편이다. • rebase는 commit.. zoosso.tistory.com 시뮬레이션 [My Computer]에 원격 저장소를 clone 하였다. [master]에서 C2, C3 작업을 하였다. 다른 팀원들이 C4, C5, C6 작.. 2022. 5. 22.
[Git 깃] git rebase Rebase란? • rebase는 "re" + "base" 로 재배치 하는 것이다. • merge와 비슷한 개념이지만 commit history 결과 차이가 있다. rebase가 commit history 깔끔하게 정리해주는 편이다. • rebase는 commit 이력을 변경할 수 있기에 다른 사람이 pull 받아서 사용하고 있다면 곤란해질 수 있다. • 다른 브랜치에서 특정 commit 만을 가져오는 것에서 cherry-pick을 활용해 볼 수 있다. • 이전 commit 수정하는 방법으로 -i 옵션을 활용할 수 있다. Merge 방식 merge 명령을 통해 C3, C4와 공통 조상 C2을 사용하는 3-way merge로 새로운 commit (C5)을 만들어 낼 수 있다. Rebase 방식 rebase.. 2022. 5. 17.
[Git 깃] git config 💻 설정된 config 목록 확인 git config --list git config -l 더보기 전체 목록 확인 global 설정만 확인 git config --global --list local 설정만 확인 git config --local --list 💻 특정 항목 config 확인 git config {항목명} 더보기 이름 및 이메일 확인 git config user.name git config user.email 💻 config 설정 (global & local) • 추가한 후 목록에서 확인할 수 있다. git config --global user.name "홍길동" git config --global user.email "zoosso.tistory.com" git config --local u.. 2022. 5. 11.
[Git 깃] git cherry-pick 💻 git cherry-pick (특정 commit 들고오기) git cherry-pick {commit hash1} git cherry-pick {commit hash2} 더보기 💻 행 단위로 구분하지 않고 한줄로 작성 가능 git cherry-pick {commit hash1} {commit_hash2} … 📌 (충돌 시) 해결 방법 • 충돌 해결을 위해 추가(git add) 혹은 삭제(git rm) • git commit 이나 --continue 옵션으로 다시 진행 git add {path} git cherry --continue 📌 (충돌 시) cherry-pick 이전 상태로 되돌리기 (중단) • --abort 옵션 사용 • cherry-pick을 하기 전 상태로 돌아 갈 수 있다. git ch.. 2022. 5. 8.
[Git] UI Application vs Terminal Git은 터미널에서 CMD 명령어를 직접 입력해서 처리할 수 있지만 한편으로 Source Tree나 GitKraken 등 다양한 Application이 있다. Application에서도 Terminal 명령어에서 처리하는 대부분 기능을 처리할 수 있지만 몇몇 기능에서는 제한적이기도 하다. Git은 버전 관리가 주 목적이기 때문에 해당 목적만 달성할 수 있다면 어떠한 방식을 사용해도 상관없겠지만 개인적으로는 좀 더 활용성이 좋은 터미널에서 이용하는 것이 좋다고 생각한다. 그 이유는 먼저 실무 협업이다. 현재 일하는 곳은 물론이고 주변에서도 터미널을 이용하는 경우가 많기 때문에 소스 버전관리 목적을 떠나서 협업하기 위해서는 터미널 숙지가 필요하다. 또한, 처음 입문 했을 때는 Git 자체를 이해하는 것이 중.. 2021. 4. 15.
[Git 깃] git show git show Commit 변경 사항과 Metadata(Hash 값, Commit Message, 수정된 파일 목록, 변경 내용 등) 표시 현재 Branch의 가장 최근 커밋 정보 확인 git show 특정 커밋 정보 화인 git show {Commit Hash} HEAD가 가리키는 Commit 정보 확인 git show HEAD 시뮬레이션 현재 Branch의 가장 최근 커밋 정보 확인 git show ① Commit Hash ② Commit Message ③ 수정된 파일 목록 ④ 변경 내용 특정 커밋 정보 화인 git show {Commit Hash} HEAD가 가리키는 Commit 정보 확인 git show HEAD ▶ 「^」 키워드를 활용해서 Head 이전 Commit 들도 상대적 개념으로 확인할.. 2021. 4. 7.
[Git] .gitignore 설정 .gitignore 설정 git은 변경점을 추적을 추적하는데, 특정 파일들을 무시(ignore)하여 추적하지 않게 할 수 있다. ▶ Log 파일이나 Build 설정은 관리 대상에서 제외 처리할 수 있다. ex) Intellij IDE에서 각 프로젝트의 ".idea" 폴더 ex) Github 등의 공개 저장소에 개인키가 올라가면 보안 문제 발생할 수 있다. 설정 파일(.gitignore) 생성 .gitignore 파일을 프로젝트 최상위 루트에 생성한 후 그 안에 버전관리에 포함하지 않을 파일을 패턴에 맞게 작성해 준다. • 표준 Glob 패턴을 사용한다. • 아무것도 없는 라인이나, "#"으로 시작하는 라인은 무시한다. • 슬래시(/)로 시작하면 하위 디렉토리에 적용되지(Recursivity) 않는다. •.. 2021. 4. 4.
반응형