Saya benar-benar baru mengenal git dan saya telah mencoba memahami mengapa git terus menunjukkan apa pun yang saya ubah di satu cabang di cabang lain ketika saya menjalankan git checkout untuk beralih antar cabang Pertama saya mencoba untuk tidak menggunakan git add dan tidak berfungsi. Namun, saya mencoba kemudian menggunakan git add, tetapi tidak memperbaiki masalah. Saya belum menggunakan git commit.
Ini pada dasarnya yang saya lakukan:
$ git clone <a_repository>
$ git branch
* master
$ git branch testing
$ git checkout testing
...edit a file, add a new one, delete...
$ git status
# On branch testing
# Changed but not updated:
# (use "git add/rm <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# deleted: file1.txt
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# file2.txt
no changes added to commit (use "git add" and/or "git commit -a")
$ git branch
master
* testing
$ git checkout master
D file1.txt
Switched to branch 'master'
$ git status
# On branch master
# Changed but not updated:
# (use "git add/rm <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# deleted: file1.txt
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# file2.txt
no changes added to commit (use "git add" and/or "git commit -a")
Saya pikir, saat menggunakan cabang, apapun yang Anda lakukan di satu cabang, itu tidak terlihat oleh semua cabang lainnya. Bukankah itu alasan membuat cabang?
Saya mencoba menggunakan "git add" tetapi perubahannya terlihat di kedua cabang. Apakah saya perlu menjalankan "git commit" sebelum beralih antar cabang untuk menghindari ini?
git add
menyembunyikan file yang tidak terlacak, hal yang harus dilakukan adalah sebelum menyimpannya. Karena itu, saya tidak yakin Anda benar-benar ingin menyimpannya di sini - jika Anda bermaksud agar perubahan tersebut menjadi bagian dari cabang yang Anda alihkan, lakukan. (Jika Anda berniat untuk beralih kembali ke cabang itu dan mengerjakan perubahan lebih banyak sebelum menerapkannya, makastash
mungkin alat yang tepat untuk pekerjaan itu.)Jawaban singkatnya: ya, Anda perlu berkomitmen. Pastikan Anda melakukannya di cabang yang benar!
Cabang adalah penunjuk ke komit. Saat Anda berkomitmen dengan cabang yang diperiksa, cabang maju untuk menunjuk ke komit baru itu. Saat Anda memeriksa cabang, Anda memeriksa komit yang ditunjuknya. (Anda dapat menganggap komit sebagai snapshot dari pohon kerja Anda.)
Jadi, jika Anda memiliki perubahan yang belum Anda lakukan, perubahan tersebut tidak akan terpengaruh dengan berpindah cabang. Tentu saja, jika pergantian cabang tidak kompatibel dengan perubahan Anda,
git checkout
hanya akan menolak untuk melakukannya.git add
adalah perintah untuk melakukan perubahan, yang kemudian akan Anda lakukan. Itu tidak merekam perubahan tersebut ke dalam sejarah repositori. Ini hanya menempatkan mereka ke dalam area pementasan (indeks);git commit
kemudian menggunakan konten dari area pementasan tersebut untuk membuat komit.sumber