Skip to main content

Tips Github

1. Using git add {regex}

Ketika kita mempunyai banyak perubahan pada sebuah project akan tetapi hanya ingin melakukan commit untuk file dengan extension tertentu bisa menggunakan

git add *.php 
# or something like
git add v_*.php

2. Add regex into .gitignore

Kita bisa menambahkan regex juga ke dalam file .gitignore untuk memberikan informasi kepada git file mana yang akan dilakukan commit dan bukan

# .gitignore
index.php
# or something like
v_*.php # ignore file v_*.php

3. git push origin HEAD

Suatu ketika kita sedang mengerjakan suatu project yang sangat besar dan membuat branch melalui gitlab ataupun project manajemen lainnyaGITLABPROJECT18001_refactor_this_certain_feature_for_reasons. Kita bisa melakukan push dengan lebih simple.

git push origin HEAD

Notes : Pastikan branch yang aktif adalah branch yang akan dilakukan push

4. git checkout abc vs git checkout -b abc

  • git checkout abc digunakan untuk pindah branch ke abc. perintah ini akan bekerja jika sudah ada
  • git checkout -b abc digunakan untuk membuat branch baru dengan nama abc. perintah ini akan bekerja jika sebelumnya tidak ada branch tersebut

5. git merge vs git rebase

Soon to be

6. Selalu lakukan git pull sebelum mengerjakan sesuatu

Lakukan hal ini karna untuk menghindari nama nya konflik. Pasti tidak enak kalo semisal kita sudah mengubah banyak akan tetapi terkena konflik oleh rekan yang lainnya.

Merge conflicts happen when:

  • 2 people are working on the same code in the same file
  • 1 person pushes his code first when the 2nd person tries to push his code, it conflicts with the code from the first person
  • in this case, git doesn’t know how to resolve this conflict in changes, and doesn’t want too for fear of causing either one developer to lose progress
  • as such, git causes a merge conflict — essentially asking the developers to handle the conflicting code themselves

Advantages of running “git pull” before working on a new feature

  • there might still be merge conflicts, but they are likely to contain smaller changes and more manageable
  • you ensure that your local codebase is up to date when you start working on something

7. Branch master theory?

Banyak dari repository management sekarang melakukan perubahan dari yang sebelumnya master menjadi main. Perubahan ini lebih terkait dengan gerakan sosial untuk menghindari istilah yang mungkin diartikan secara negatif atau divisif, seperti "master" yang bisa diasosiasikan dengan perbudakan.

Gerakan ini menjadi lebih luas di tahun 2020 setelah meningkatnya kesadaran akan isu sosial, terutama selama protes Black Lives Matter.

8. Jangan lupa menghapus branch setelah merge

Dalam project besar atau dalam sebuah perusahaan. developer pasti diminta untuk membuat branch baru ketika ingin menambahkan fitur. Yang mana hal tersebut sangatlah bagus karna branch main tidak akan terpengaruh oleh perubahan.

Akan tetapi jika developer lupa untuk menghapus branch maka akan menjadi tumpukan branch.

Note : git menyimpan branch secara local di directory .git/refs/heads

Jadi, bagaimana jika kita punya 1000 branch di local? git akan mempunyai 1000 folder yang tidak dipakai. Hal tersebut jika dibiarkan akan memperlambat di beberapa waktu.

9. git commit - Double Commit

Ketika kamu sudah melakukan commit tetapi ingin mengubah atau menambahkan perubahan pada commit tersebut, kamu bisa menggunakan amend.

Cara menggunakan amend:

  1. Lakukan perubahan pada file yang ingin ditambahkan.
  2. Tambahkan file ke staging area:
    git add file_name
  3. Gunakan git commit --amend untuk memperbarui commit sebelumnya:
    git commit --amend
  4. Edit pesan commit jika diperlukan, atau cukup simpan untuk mempertahankan pesan yang sama.

Catatan:

  • Jangan gunakan amend jika commit sudah di-push ke remote, kecuali dengan force push (git push --force) karena bisa mengganggu history orang lain. tetapi ini tidak di rekomendasikan

10. git log is basic

Menggunakan command git log memang memberikan informasi. Akan tetapi, kita tidak terbiasa dengan format yang diberikan

git log

Let's be real, log yang dihasilkan pastinya sangat membosankan untuk membacanya dan informasi yang diberikan terkadang kita masih belum memerlukan informasi tersebut.

Log with more visibility

Kita bisa mendapat informasi yang lebih dengan menambahkan --format atau --graph. Salah satu contoh code untuk melakukan format adalah ...

git log --graph --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%an%C(reset)%C(bold yellow)%d%C(reset) %C(dim white)- %s%C(reset)' --all

atau mungkin lebih sederhana

git log --graph --format=format:'%h - %s' --all

Dengan menggunakan format tersebut kita dapat mendapatkan hasil yang lebih enak untuk dibaca. Log tersebut memberikan informasi tentang siapa yang melakukan commit tersebut, kapan commit tersebut dilakukan dan pesan perubahan yang kita lakukan.

--graph jika kita menambahkan argumen tersebut kedalam command yang akan terjadi adalah git akan memberikan gambaran perubahan yang terjadi di branch project tersebut.

--format jika kita menambahkan format tersebut. Kita bisa melakukan formating sesuai dengan kebutuhan.

11. Detail commit

Setelah kita melihat log dari branch project, hal yang bisa kita lakukan adalah melihat statistik perubahan setiap commit. Untuk melihat setiap statistik perubahan dari High level view. akan tetapi juga melihat perubahan di setiap file.

Untuk melihat rangkuman commit:

git show <commit> --stat

Untuk melihat detail perubahan di file adalah dengan :

git show <commit> -- <filepath>

12. git merge vs git rebase

Ketika terdapat perubahan di branch main dan Anda ingin memasukkan perubahan tersebut ke branch aktif, Anda dapat menggunakan perintah merge atau rebase.

  • merge mengambil perubahan dari satu branch dan menggabungkannya ke branch lain dalam satu commit gabungan.

    git merge origin/main your-branch
  • rebase menyesuaikan titik di mana branch bercabang dengan memindahkan branch ke titik awal baru dari cabang dasarnya.

    git rebase origin/main your-branch

Secara umum:

  • Gunakan rebase untuk menyertakan perubahan dari branch upstream (seperti main) ke dalam branch Anda.
  • Gunakan merge untuk menggabungkan perubahan dari branch Anda kembali ke branch utama (main).