git checkout -b myFeature origin/master
alasan kenapa menggunakan cara ini biar tidak menyulitkan yang bagian marge di sisi server
pastikan titik saat ini sama dengan origin/master
#git status
#git log --oneline
git fetch
git rebase -i origin/master
#git status
#vi readme.md
#git add readme.md
#git rebase --continue
git push origin firstFeatureFromChipulaja
#git pull origin firstFeatureFromChipulaja
#git push origin firstFeatureFromChipulaja
keterangan perintah :
-
git status
untuk memastikan semua revisi dan implementasi feature sudah masuk stage, jika ada yang belum masuk lakukangit add
kemudiangit commit
-
git log --oneline
untuk memastikan branch kita setara atau di depan origin/master, jika di baris awal atau baris di bawahnya tidak ada tulisan origin/master, maka kemungkinan besar notif fast-forward atau Your branch is ahead by X commits akan muncul
contohnya seperti berikut :f79f0df (HEAD -> firstFeatureFromChipulaja) implementasi feature b a529867 revisi readme.txt to readme.md b257fa5 (master) init
-
git rebase -i origin/master
untuk menyamakan posisi head branch sekarang sama dengan atau di atas origin master. Kemudian di lanjut dengan perintahgit status && vi readme.md && git add readme.md && git rebase --continue
perintah tersebut untuk memastikan/memperbaiki konfilik yang terjadi akibat pengabungan dengan branch origin master. untuk lebih jelasnya kita bisa lihat perubahan tersebut dengan perintahgit log --onedecorate
86f0242 (HEAD -> firstFeatureFromChipulaja) implementasi feature b f42975c revisi readme.txt to readme.md 046f6c2 (origin/firstFeatureFromSyaiful, firstFeatureFromSyaiful, origin/master) implementasi feature a 60e2509 revisi readme.txt to readme.md b257fa5 (master) init
-
git pull origin firstFeatureFromChipulaja
lakukan perintah ini jika mendapatkan notif non-fast-forward kemudian jalankan perintahgit push origin firstFeatureFromChipulaja
sekali lagi.
terkadang kita pernah melakukan beberapa commit yang sebenarnya bisa di gabungkan dengan commit yang berikutnya untuk mengatasi hal itu kita bisa melakukan nya dengan perintah
git rebase -i HEAD~2
#HEAD~2 maksudnya 2 commit di depan HEAD
#ganti pick baris terakhir dengan squash
terkadang kita pernah menemui ada commit baru saat melakukan merge dari pull request di menu web admin,
hal ini terjadi karena kita memilih mode merge commit
ganti cara ini dengan mode merge squash
git diff --name-only SHA1 SHA2
#atau
git diff --name-only HEAD~10 HEAD~5
git diff -–staged nama_file
#atau
git diff –-cached nama_file
#cara 1
git diff > mypatch.patch
#cara 2
menyusul kalo ada waktu
terkadang dalam sebuah project ada file yang berubah secara otomatis dan kita tidak mau file/folder tersebut
muncul ketika kita menjalankan perintah git status
maka langkah yang bisa dilakukan
#untuk spesifik folder untuk linux
find folder/yangpengen/diignore/ -type f -exec git update-index --assume-unchanged '{}' \;
#untuk spesifik file
git update-index --assume-unchanged config/database.yml
sedangkan untuk melihat daftar file/folder yang uda kita ignore dengan cara di atas jalankan perintah di bawah
git ls-files -v | grep '^[[:lower:]]'
dan untuk mengembalikan supaya tidak di ignore ikuti jalankan perintah di bawah
git update-index --no-assume-unchanged config/database.yml
atau untuk banyak file dalam satu folder
find folder/yangpengen/diignore/ -type f -exec git update-index --no-assume-unchanged '{}' \;