Friday, November 13, 2015

Abort merge

Bila nak merge, ada conflict. Bila kita dah fix part yang conflict, kemudian decide nak cancel merge:-

git reset HEAD filename
git checkout filename
git status
On branch elms-115-back-to-allauth
All conflicts fixed but you are still merging.
  (use "git commit" to conclude merge)

nothing to commit, working directory clean
Masih dalam merge mode. Ada cara lebih mudah rupanya:-
git merge --abort
http://tedfelix.com/software/git-conflict-resolution.html

Tuesday, October 13, 2015

Set color on output

Git sepatutnya menggunakan color untuk output secara default tetapi dalam OSX saya dapati tidak demikian. Contohnya untuk dapatkan color untuk diff, perlu run:-

git diff --color
Untuk set default:-
git config --global color.ui true

Friday, August 7, 2015

Partial commit

Antara kesilapan yang sering dilakukan - commit bercampur-campur. Commit untuk fix isu berkaitan variable lupa nak initialize bercampur dengan commit tambah logging. Ini biasa berlaku apabila kita sedang tambah code berkaitan logging, tiba-tiba kena fix isu pasal uninitialized variable. Commit yang bagus perlu bersifat atomic dan reflect changes yang kita nak buat. Ini dipanggil changset.

Untuk elakkan commit bercampur ini, boleh gunakan partial commit:-
> git add -p
diff --git a/main.py b/main.py
index 25fbafc..260c43d 100644
--- a/main.py
+++ b/main.py
@@ -35,7 +35,7 @@ def get(param):
         return out
     return out[:length]

-def main(token):
+def main(token, user=None):
     bot = telegram.Bot(token)  # Telegram Bot Authorization Token

     global LAST_UPDATE_ID
Stage this hunk [y,n,q,a,d,/,j,J,g,e,?]?
Di atas git memberikan kita option sama ada untuk add changes tersebut ke index, atau skip ke changes seterusnya.

Push to multiple remote

Ramai yang menggunakan Github untuk host repo git mereka. Namun masih ada perkhidmatan hosting git yang lain seperti Gitlab atau BitBucket. Bagaimana kalau kita dapat push code kita ke semua hosting ini serentak ?

Boleh gunakan multiple remote:-

git remote set-url --add --push origin https://github.com/k4ml/wgetbot.git
git remote set-url --add --push origin https://gitlab.com/k4ml/wgetbot.git
git remote -v
origin https://github.com/k4ml/wgetbot.git (fetch)
origin https://gitlab.com/k4ml/wgetbot.git (push)
origin https://github.com/k4ml/wgetbot.git (push)

> git push origin master
Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 363 bytes, done.
Total 3 (delta 1), reused 0 (delta 0)
To https://gitlab.com/k4ml/wgetbot.git
   e23b4c0..2640546  master -> master
Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 363 bytes, done.
Total 3 (delta 1), reused 0 (delta 0)
To https://github.com/k4ml/wgetbot.git
   e23b4c0..2640546  master -> master

Wednesday, August 5, 2015

Lihat perubahan (diff) pada index (staging area)

Biasanya kita akan menggunakan command git diff untuk melihat perubahan yang telah kita lakukan terhadap sesuatu fail. Namun apabila kita telah memasukkan fail tersebut ke index/staging area, git diff tidak akan menunjukkan apa-apa perubahan lagi. Gunakan arahan berikut:-
git diff --staged
Atau:-
git diff --cached