My Favourite Git Command
Tags: branch, command, git, log
Published: 2022-11-17 18:07:34

## Change git init Default Branch Name

Setelah Git versi 2.28, kita dapat menentukan nama branch default default secara global untuk setiap kali melakukan `git init`, yaitu dengan perintah berikut:

### Global Configuration

```bash
git config --global init.defaultBranch main
```

### Initialize New Repository

Setelah konfigurasi di atas, apabila kita melakukan inisiasi git baru, maka akan membuat branch baru dengan nama `main`.

```bash
git init
```

Output:

```bash
Initialised empty Git repository in D:/Repo/Test Project/.git/
```

### Check Status

```bash
git status
```

Output:

```bash
On branch main

No commits yet

nothing to commit (create/copy files and use "git add" to track)
```

## Rename `master` branch menjadi `main`

Untuk mengubah nama branch `master` menjadi `main` dapat dilakukan dengan cara berikut:

1. Pertama kita pastikan bahwa kita tengah berada di branch `master`

    ```bash
    git checkout master
    ```

    Output:

    ```bash
    Switched to branch 'master'
    ```

2. Input perintah berikut untuk mengubah nama branch menjadi `main`

    ```bash
    git branch -m main
    ```

3. Lalu kita pastikan perubahan nama branch sudah berhasil atau tidak

    ```bash
    git branch
    ```

    Output:

    ```bash
    * main
      newfeature
    ```

> `newfeature` hanya contoh nama branch lain yang ada di repo.

## Commit History

Perintah dasar untuk menampilkan commit history adalah: `git log`. Tapi perintah ini akan menampilkan list commit dengan tampilan yang kurang intuitif dan mungkin menampilkan informasi yang tidak perlu. Berikut perintah yang bisa digunakan untuk menampilkan log dengan tampilan yang lebih mudah dibaca:

```bash
git log --pretty=format:"%s by %an at %ar" --graph --shortstat
```

Output:

```bash
*   Merge branch 'newfeature' by ahoNerd at 15 seconds ago
|\
| * New Feature 2 by ahoNerd at 2 minutes ago| |
| |  1 file changed, 0 insertions(+), 0 deletions(-)

| * New Feature by ahoNerd at 5 minutes ago| |
| |  1 file changed, 0 insertions(+), 0 deletions(-)

* | New Fix by ahoNerd at 4 minutes ago
| |
|    1 file changed, 0 insertions(+), 0 deletions(-)

* Initial by ahoNerd at 57 minutes ago
   1 file changed, 0 insertions(+), 0 deletions(-)
```

## Ignore file yang sudah terlanjur di-commit

Seperti yang telah kita ketahui bahwa git dapat mengabaikan file atau direktori yang kita atur melalui file `.gitignore`. Tapi hal tersebut hanya berlaku untuk file yang berstatus `unctracked` atau belum di-commit. Nah, bagaimana jika kita ingin mengabaikan beberapa file atau folder yang sudah terlanjur di-commit? Berikut ini step-by-step-nya:

### Persiapan

1.  Pastikan semua revisi yang sedang dikerjakan di-`stash` atau di-`commit` terlebih dahulu.
2.  Pastikan juga file `.gitignore` sudah berisi semua file dan atau direktori yang sesuai.

### Proses clean-up

1. Hapus semua file dari index (tenang saja dengan perintah ini tidak akan menghapus file sebenarnya)

    ```bash
    git rm -r --cached .
    ```
2. Karena semua file sudah dihapus dari index, maka kita perlu menambahkan lagi semua file ke stagging area

    ```bash
    git add .
    ```
3. Lakukan commit

    ```bash
    git commit -m "Clean up ignored files"
    ```

## Credit

Photo by <a href="https://unsplash.com/@6heinz3r?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Gabriel Heinzer</a> on <a href="https://unsplash.com/@6heinz3r?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Unsplash</a>