Skip to content

Commit

Permalink
chore: Update content for linkerd upgrade
Browse files Browse the repository at this point in the history
  • Loading branch information
younsl committed Aug 4, 2024
1 parent a219a4e commit 5837eba
Showing 1 changed file with 87 additions and 21 deletions.
108 changes: 87 additions & 21 deletions content/blog/initialize-entire-commit-log.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
---
title: "git 커밋로그 전체 삭제"
date: 2022-04-15T22:33:52+09:00
lastmod: 2023-02-24T18:04:52+09:00
lastmod: 2024-08-04T13:48:22+09:00
slug: ""
description: "중요정보나 파일이 Public 레포지터리에 노출된 상황일 때, 커밋로그를 전체를 삭제(초기화)하는 방법"
keywords: []
tags: ["git", "dev"]
---

{{< toc >}}

&nbsp;

## 개요

특정 레포지터리의 전체 커밋로그를 삭제(초기화)하는 방법을 설명합니다.
Expand All @@ -27,12 +31,13 @@ tags: ["git", "dev"]
4. `latest_branch`의 이름을 `main`으로 변경합니다.
5.`main` 브랜치를 레포로 `push`합니다.

커밋로그 초기화에 대한 해결방법은 로컬에 다운로드 받은 레포지터리 디렉토리에서 실행해야 합니다.

&nbsp;

### 주의사항

이 가이드를 따라하면 지금까지의 main 브랜치의 전체 커밋 로그(히스토리)가 사라집니다.
삭제된 커밋 로그는 복구할 방법이 없다는 사실을 명심하도록 합니다.
이 가이드를 따라하면 지금까지의 main 브랜치의 전체 커밋 로그(히스토리)가 사라집니다. 삭제된 커밋 로그는 복구할 방법이 없다는 사실을 명심하도록 합니다.

&nbsp;

Expand All @@ -47,92 +52,104 @@ git version 2.37.1 (Apple Git-137.1)

&nbsp;

## 해결법
## 해결방법

git 명령어로 커밋 로그를 초기화하는 방법과 미리 준비된 스크립트로 초기화하는 방법이 있습니다.

### Checkout
&nbsp;

### git 명령어로 실행

#### Checkout

`latest_branch`라는 이름의 브랜치를 생성합니다.

```bash
# [>] main
$ git checkout --orphan latest_branch
git checkout --orphan latest_branch
```

`checkout`은 새로운 브랜치를 만드는 명령어입니다.

&nbsp;

### 전체 파일 Add
#### 전체 파일 Add

전체 파일을 새로 만든 `latest_branch` 브랜치에 추가합니다.

```bash
# [ ] main
# [>] latest_branch
$ git add -A
git add -A
```

전체 파일을 새로 만든 `latest_branch` 브랜치에 추가한다.
`-A`는 전체 파일을 추가하는 옵션입니다.

&nbsp;

```bash
# [ ] main
# [>] latest_branch
$ git commit -am "Initial commit"
git commit \
-m "Initial commit" \
-m "Initialize repository to clean all commit history using commit history cleaner script"
```

전체 파일을 그대로 새로 만든 `latest_branch` 브랜치에 커밋합니다.

&nbsp;

### 브랜치 삭제
#### 브랜치 삭제

기존 `main` 브랜치를 삭제합니다.

```bash
# [X] main
# [>] latest_branch
$ git branch -D main
git branch -D main
```

`main` 브랜치를 지우면 지금까지 기록된 전체 커밋 로그도 같이 삭제됩니다.

&nbsp;

### 새 브랜치 이름 변경
#### 새 브랜치 이름 변경

새로 만든 `latest_branch` 브랜치를 `main`으로 변경합니다.

```bash
# [>] latest_branch --> main
$ git branch -m main
git branch -m main
```

`-m`은 브랜치의 이름을 변경하는 옵션입니다.

&nbsp;

### 강제 업데이트
#### 강제 업데이트

```bash
# [>] main
$ git push -f origin main
git push -f origin main
```

마지막으로 커밋한 전체 파일을 강제로 `main` 브랜치에 올립니다.

&nbsp;

### 결과확인
#### 결과확인

`main` 브랜치에서 커밋 로그를 확인합니다.

```bash
# [>] main
$ git log --graph
git log --graph

# Display commit history as a one-line summary with a graph
git log --oneline --graph
```

`--graph` 옵션은 커밋 로그 전체를 트리 형태로 그려줍니다.
`git log`에서 `--graph` 옵션은 커밋 로그 전체를 트리 형태로 그려줍니다.

&nbsp;

Expand All @@ -146,12 +163,54 @@ $ git log --graph
Initial commit
```

지금까지의 전체 커밋로그가 사라지고 초기화 커밋만 기록되었습니다.
지금까지의 전체 커밋로그가 사라지고 초기화 커밋만 기록되었습니다.

이제 중요 정보가 노출된 커밋로그는 어느 누구도 확인할 수 없습니다.

&nbsp;

이걸로 조치가 끝났습니다.
커밋 로그 초기화가 완료되었습니다.

&nbsp;

### 스크립트로 실행

먼저 Commit 로그를 초기화할 Git 디렉토리로 이동합니다.

Github Cloud에 공개되어 있는 [커밋 로그 초기화를 위한 스크립트](https://github.com/younsl/box/blob/main/box/script/github/commit-history-cleaner.sh)<sup>`commit-history-cleaner.sh`</sup>를 다운로드 받습니다.

```bash
wget -O commit-history-cleaner.sh \
https://raw.githubusercontent.com/younsl/box/main/box/script/github/commit-history-cleaner.sh
```

&nbsp;

스크립트를 실행합니다.

```bash
sh commit-history-cleaner.sh
```

&nbsp;

정말로 실행할 지 한 번 묻는데, 이 때 `y`를 입력합니다.

```bash
This script will delete the main branch and create the latest_branch branch.
Do you want to continue? (yY/n) y
```

&nbsp;

커밋 로그 초기화된 결과를 확인합니다.

```bash
# Display commit history as a one-line summary with a graph
git log --oneline --graph
```

커밋 로그 초기화가 완료되었습니다.

&nbsp;

Expand All @@ -165,3 +224,10 @@ $ git log --graph
애초에 작업 목적을 잘 생각해보면 우리는 레포지터리의 커밋 로그 전체를 날리고 싶었습니다.
main 브랜치를 그대로 다른 브랜치에 복제 떠서 백업한 후 main 브랜치 자체를 날리는게 훨씬 간단하고 안전합니다.
브랜치가 삭제될 때 그 안에 포함된 모든 커밋 로그도 같이 삭제된다는 점을 명심하세요.

&nbsp;

## 참고자료

**Github**
[commit log 초기화 스크립트](https://github.com/younsl/box/blob/main/box/script/github/commit-history-cleaner.sh)

0 comments on commit 5837eba

Please sign in to comment.