git reset 명령어는 현재 HEAD를 특정 커밋으로 이동시키는데 사용됩니다. 이는 주로 이전의 상태로 "되돌리고" 싶을 때 사용되는 명령어입니다.
detached head 와 다른점은 지정된 커밋이후의 커밋을 삭제한다.
단순히 그 커밋들이 현재 브랜치에서 보이지 않게 된다는 것이며, 그 커밋들은 여전히 Git 저장소 내에 존재하게 됩니다. 그러므로 실수로 너무 많이 되돌렸다면 원래의 상태로 다시 되돌릴 수 있습니다.
--soft 커밋취소, 변경사항유지, add유지 (잘 안씀)
--mixed(기본) 커밋취소, 변경사항유지, add풀림
--hard 커밋취소, 변경사항삭제, add풀림 (신중히 사용)
git reset --hard ORIG_HEAD (되돌리기)
git reset --hard HEAD (git restore 과 똑같은 효과)
git revert [취소하고싶은 커밋의 해시](또는 그냥 HEAD)
reset은 없던 일처럼 커밋을 삭제하며 돌아가고
revert는 잘못된 커밋을 남겨두고(기록) 새로운 커밋을 만들어서 옮김 - 같이 작업할 때 서로 커밋의 개수가 다르지 않게 reset이 아닌 revert를 써서 다른 사람의 커밋 기록과 차이가 나지 않게 한다.(깃허브에 올리기전엔 reset 가능)
요약 - reset은 개인적으로 사용, revert는 공용작업 때 사용
주요 특징 및 기능
1. 코드 호스팅
2. 버전 관리
3. 협업
4. 이슈 트래킹 및 프로젝트 관리
5. 통합 및 확장
git push 명령어를 통해 로컬 저장소의 변경 사항을 원격 저장소로 푸시할 수 있다.
따라서, 로컬 저장소와 원격 저장소는 모두 중요하며, 서로 다른 목적과 기능을 가지고 있습니다. 로컬 저장소는 개인적인 작업 공간이며, 원격 저장소는 코드를 공유하고 협업하는 공간입니다. 또한, Git의 분산 버전 관리 시스템의 특징을 최대한 활용하기 위해, 이 두 저장소를 적절히 사용하는 것이 중요합니다.
git clone은 프로젝트를 다운 받을 때 사용하는 명령어다.
원격 저장소에 로컬 저장소 버전관리 정보 업로드
git push
+git push origin --delete [브랜치명] : 원격브랜치 삭제
원격 추적 브랜치(Remote Tracking Branch)는 Git에서 원격 저장소의 브랜치를 추적하는 로컬 브랜치를 의미합니다. 이 브랜치들은 원격 브랜치의 상태를 반영하며, 로컬에 있는 사용자의 변경사항과 원격 저장소의 변경사항을 동기화하는 데 도움을 줍니다.
Github에서 클론 해왔을 때 main이 아닌 git switch로 다른 브랜치로 HEAD포인터를 옮기면 자동으로 브랜치가 생성됨.
git fetch는 원격 저장소에서 정보를 가져오는 Git 명령입니다. 이 명령을 사용하면 원격 저장소의 최신 변경 사항을 로컬로 가져오지만, 작업 중인 브랜치에 이 변경 사항을 병합하거나 커밋하지 않습니다. 이렇게 하면 원격 저장소의 변경 사항을 보거나, 그 변경 사항을 사용하여 다른 브랜치를 만들 수 있습니다.
git fetch [remote-name] : main에 추가하지 않고 새로운 브랜치를 만들어 충돌 위험 없이 작업 내용을 가져옴.
git pull = git fetch + git merge
git fetch와 git pull은 Git에서 원격 저장소의 데이터를 로컬로 가져오는 두 가지 주요 명령어입니다. 하지만 이 두 명령어는 비슷해 보일 수 있지만, 매우 중요한 차이점이 있습니다.
Git Fetch
git fetch는 원격 저장소의 최신 커밋, 브랜치, 태그 등을 모두 가져옵니다. 그러나 이 변경 사항을 자동으로 로컬 브랜치와 병합하지 않습니다. 대신 원격 저장소의 변경 사항을 검토하고, 필요한 경우 수동으로 병합할 수 있도록 합니다.
Git Pull
반면에 git pull은 git fetch와 git merge를 결합한 것으로, 원격 저장소의 변경 사항을 가져온 후 자동으로 현재 브랜치와 병합합니다. 이는 원격 저장소의 최신 변경 사항을 즉시 반영하고자 할 때 유용합니다.