TIL - 20250513

juni·2025년 5월 13일

TIL

목록 보기
6/316

1. Git Reset

git reset 명령어는 현재 HEAD를 특정 커밋으로 이동시키는데 사용됩니다. 이는 주로 이전의 상태로 "되돌리고" 싶을 때 사용되는 명령어입니다.

detached head 와 다른점은 지정된 커밋이후의 커밋을 삭제한다.
단순히 그 커밋들이 현재 브랜치에서 보이지 않게 된다는 것이며, 그 커밋들은 여전히 Git 저장소 내에 존재하게 됩니다. 그러므로 실수로 너무 많이 되돌렸다면 원래의 상태로 다시 되돌릴 수 있습니다.

--soft 커밋취소, 변경사항유지, add유지 (잘 안씀)
--mixed(기본) 커밋취소, 변경사항유지, add풀림
--hard 커밋취소, 변경사항삭제, add풀림 (신중히 사용)

git reset --hard ORIG_HEAD (되돌리기)
git reset --hard HEAD (git restore 과 똑같은 효과)

2. Git Revert

git revert [취소하고싶은 커밋의 해시](또는 그냥 HEAD)

reset은 없던 일처럼 커밋을 삭제하며 돌아가고
revert는 잘못된 커밋을 남겨두고(기록) 새로운 커밋을 만들어서 옮김 - 같이 작업할 때 서로 커밋의 개수가 다르지 않게 reset이 아닌 revert를 써서 다른 사람의 커밋 기록과 차이가 나지 않게 한다.(깃허브에 올리기전엔 reset 가능)

요약 - reset은 개인적으로 사용, revert는 공용작업 때 사용

3. Github

주요 특징 및 기능
1. 코드 호스팅
2. 버전 관리
3. 협업
4. 이슈 트래킹 및 프로젝트 관리
5. 통합 및 확장

  • 원격 저장소의 대표적인 서비스는 GitHub, GitLab, Bitbucket 등이 있다.

git push 명령어를 통해 로컬 저장소의 변경 사항을 원격 저장소로 푸시할 수 있다.

따라서, 로컬 저장소와 원격 저장소는 모두 중요하며, 서로 다른 목적과 기능을 가지고 있습니다. 로컬 저장소는 개인적인 작업 공간이며, 원격 저장소는 코드를 공유하고 협업하는 공간입니다. 또한, Git의 분산 버전 관리 시스템의 특징을 최대한 활용하기 위해, 이 두 저장소를 적절히 사용하는 것이 중요합니다.

4. Git Clone

git clone은 프로젝트를 다운 받을 때 사용하는 명령어다.

  • git init이 된 곳에서 clone을 하면 안 됨.
  • git remote add 같은 명령어는 자동 처리되어 있음.

5. Git Remote

  • 원격 저장소를 관리하는 명령
    git remote add [별칭=origin][주소] : 프로젝트를 업로드 할 원격 저장소 주소 추가
    git remote remove : 원격 저장소 주소 삭제
    git remote rename : 원격 저장소의 별칭을 변경
    git remote show : 원격 저장소의 정보를 확인
    git remote -v : 추가된 원격 저장소의 목록을 확인

6. Git push

원격 저장소에 로컬 저장소 버전관리 정보 업로드
git push

+git push origin --delete [브랜치명] : 원격브랜치 삭제

7. Remote Tracking Branch

원격 추적 브랜치(Remote Tracking Branch)는 Git에서 원격 저장소의 브랜치를 추적하는 로컬 브랜치를 의미합니다. 이 브랜치들은 원격 브랜치의 상태를 반영하며, 로컬에 있는 사용자의 변경사항과 원격 저장소의 변경사항을 동기화하는 데 도움을 줍니다.

Github에서 클론 해왔을 때 main이 아닌 git switch로 다른 브랜치로 HEAD포인터를 옮기면 자동으로 브랜치가 생성됨.

8. Git Fetch

git fetch는 원격 저장소에서 정보를 가져오는 Git 명령입니다. 이 명령을 사용하면 원격 저장소의 최신 변경 사항을 로컬로 가져오지만, 작업 중인 브랜치에 이 변경 사항을 병합하거나 커밋하지 않습니다. 이렇게 하면 원격 저장소의 변경 사항을 보거나, 그 변경 사항을 사용하여 다른 브랜치를 만들 수 있습니다.

git fetch [remote-name] : main에 추가하지 않고 새로운 브랜치를 만들어 충돌 위험 없이 작업 내용을 가져옴.

9. Git Pull

git pull = git fetch + git merge

9. Git Fetch와 Git Pull 비교

git fetchgit pull은 Git에서 원격 저장소의 데이터를 로컬로 가져오는 두 가지 주요 명령어입니다. 하지만 이 두 명령어는 비슷해 보일 수 있지만, 매우 중요한 차이점이 있습니다.

Git Fetch

git fetch는 원격 저장소의 최신 커밋, 브랜치, 태그 등을 모두 가져옵니다. 그러나 이 변경 사항을 자동으로 로컬 브랜치와 병합하지 않습니다. 대신 원격 저장소의 변경 사항을 검토하고, 필요한 경우 수동으로 병합할 수 있도록 합니다.

Git Pull

반면에 git pullgit fetchgit merge를 결합한 것으로, 원격 저장소의 변경 사항을 가져온 후 자동으로 현재 브랜치와 병합합니다. 이는 원격 저장소의 최신 변경 사항을 즉시 반영하고자 할 때 유용합니다.

  • Push 하기 전에 Fetch 또는 Pull 하기
  • 충돌 방지
  • 업-to-date 상태 유지

0개의 댓글