Git은 버전 관리 시스템으로써 매우 강력하고 다양한 기능을 제공합니다. 아래는 Git에서 자주 사용되는 명령어 중 일부입니다.
- git init: 새로운 Git 저장소를 초기화합니다.
- git add: 파일을 staging area에 추가합니다.
- git commit: staging area에 있는 파일을 커밋하고, 커밋 메시지를 작성합니다.
- git status: 현재 저장소의 상태를 확인합니다.
- git log: 커밋 로그를 확인합니다.
- git diff: 현재 변경 내용과 이전 커밋 사이의 차이점을 보여줍니다.
- git branch: 브랜치를 생성하거나 확인합니다.
- git checkout: 다른 브랜치로 이동하거나 특정 커밋으로 되돌아갑니다.
- git merge: 브랜치를 병합합니다.
- git push: 로컬 저장소의 변경 내용을 원격 저장소로 푸시합니다.
- git pull: 원격 저장소의 변경 내용을 로컬 저장소로 풀합니다.
git rebase
Git Rebase는 Git에서 브랜치를 합치는 방법 중 하나로, 두 개의 브랜치에서 각각 개발한 내용을 한 브랜치에 합치는 기능을 제공합니다. 이 기능을 사용하면 브랜치의 변경 이력을 깔끔하게 유지할 수 있으며, 협업을 하는 경우 코드의 충돌을 최소화할 수 있습니다.
Rebase는 두 개의 브랜치를 이어 붙이는 것이 아니라, 한 브랜치에서 다른 브랜치의 변경 이력을 가져와서 마치 자신의 브랜치에서 작업한 것처럼 히스토리를 재구성합니다. 이로 인해 브랜치의 히스토리가 한 줄로 유지되며, 브랜치를 병합할 때 발생하는 충돌도 최소화됩니다.
다음은 Rebase를 사용하는 방법입니다:
- 먼저, 브랜치를 이동하여 Rebase를 수행할 브랜치로 이동합니다.
- cssCopy code git checkout [branch]
- Rebase를 실행합니다.여기서 [target_branch]는 가져올 변경 이력을 가진 브랜치를 나타냅니다. 이 명령어를 실행하면 현재 브랜치의 커밋들이 [target_branch]에 있는 커밋들 위로 옮겨지며, 충돌이 발생하면 충돌을 해결하고 다시 커밋합니다.
- cssCopy code git rebase [target_branch]
- Rebase가 완료되면, 변경 이력을 원격 저장소에 푸시합니다.이 명령어는 원격 저장소에 강제로 푸시합니다. 따라서 다른 개발자들과 협업하는 경우, 이 명령어를 사용하기 전에 먼저 다른 개발자들과 브랜치를 동기화하는 것이 좋습니다.
- cssCopy code git push --force [remote_name] [branch]
Rebase는 코드를 깔끔하게 유지하면서 브랜치를 병합하는 효과적인 방법입니다. 하지만, 여러 개발자들이 동시에 작업하는 경우 충돌이 발생할 가능성이 높으므로, 충돌 해결에 대한 경험이 필요합니다.
git reflog
Git reflog는 Git에서 수행한 모든 작업(커밋, 브랜치 변경, 병합 등)에 대한 로그를 볼 수 있는 명령어입니다. 이 명령어를 사용하면 Git의 내부 로그를 조회하여 변경 이력을 살펴볼 수 있습니다.
Git reflog는 로컬 저장소에서 작업하는 동안 유용합니다. 예를 들어, 작업 중인 브랜치에서 실수로 커밋을 삭제하거나, 브랜치를 잘못해서 이전 상태로 되돌아가야 할 때, reflog를 사용하여 이전 상태로 복원할 수 있습니다.
reflog 명령어를 실행하면 최근에 수행한 작업 목록이 출력되며, 각 작업에 대한 커밋 해시값, 작업한 시간 등이 함께 출력됩니다. 이를 통해 작업 이력을 살펴보고, 필요한 경우 해당 작업으로 되돌아갈 수 있습니다.
예를 들어, git reflog 명령어를 실행하면 다음과 같은 출력이 나올 수 있습니다.
git reflog
59af73a HEAD@{0}: commit: Updated README file
e08fcd8 HEAD@{1}: commit: Added new feature to the code
8c7ae9a HEAD@{2}: commit: Fixed a bug in the code
c9fd9f1 HEAD@{3}: checkout: moving from feature-branch to master
bfcf88e HEAD@{4}: commit: Added a new function to the code
위 예제에서는 **HEAD**를 기준으로 최근 작업을 출력하고 있습니다. **HEAD@{0}**은 가장 최근 작업을 의미하며, {1}, **{2}**와 같이 더 오래된 작업에 대한 정보도 출력됩니다.
Git reflog는 로컬 저장소에서 일어난 모든 작업을 조회할 수 있으므로, Git의 내부 작동 방식에 대한 이해도를 높일 수 있습니다.
만약 commit 후 해당 commit을 삭제한 경우에도 git reflog를 이용해 확인할 수 있으며 상세한 메시지도 git log [commit id] 로 확인할 수 있습니다.
'Programming > Git' 카테고리의 다른 글
GitLab에 Board에 In Progress 상태 추가하기 (0) | 2024.08.05 |
---|---|
git log 메시지 글자깨짐 현상 해결 방법 (0) | 2024.01.03 |
Git에서 CA관련 오류 발생 해결 방법 (0) | 2023.04.10 |
[Git] Git에서 CA관련 오류 발생 해결 방법 (0) | 2021.07.23 |
마크다운에서 수식 입력하기 (0) | 2021.07.13 |