Jadi saya menambahkan folder untuk saya .gitignore file.
Setelah saya melakukan git status
itu memberitahu saya
# On branch latest
nothing to commit (working directory clean)
Namun, ketika saya mencoba untuk mengubah cabang-cabang yang saya dapatkan sebagai berikut:
My-MacBook-Pro:webapp marcamillion$ git checkout develop
error: The following untracked working tree files would be overwritten by checkout:
public/system/images/9/thumb/red-stripe.jpg
public/system/images/9/original/red-stripe.jpg
public/system/images/8/thumb/red-stripe-red.jpg
public/system/images/8/original/red-stripe-red.jpg
public/system/images/8/original/00-louis_c.k.-chewed_up-cover-2008.jpg
public/system/images/7/thumb/red-stripe-dark.jpg
public/system/images/7/original/red-stripe-dark.jpg
public/system/images/7/original/DSC07833.JPG
public/system/images/6/thumb/red-stripe-bw.jpg
public/system/images/6/original/website-logo.png
public/system/images/6/original/red-stripe-bw.jpg
public/system/images/5/thumb/Guy_Waving_Jamaican_Flag.jpg
public/system/images/5/original/logocompv-colored-squares-100px.png
public/system/images/5/original/Guy_Waving_Jamaican_Flag.jpg
public/system/images/4/thumb/DSC_0001.JPG
public/system/images/4/original/logo.png
public/system/images/4/original/DSC_0001.JPG
public/system/images/4/original/2-up.jpg
public/system/images/3/thumb/logo2.gif
public/system/images/3/original/logo2.gif
public/system/images/3/original/Guy_Waving_Jamaican_Flag.jpg
public/system/images/3/original/11002000962.jpg
public/system/images/2/thumb/Profile Pic.jpg
public/system/images/2/original/Profile Pic.jpg
public/system/images/2/original/02 Login Screen.jpg
public/system/images/1/original/Argentina-2010-World-Cup.jpg
Please move or remove them before you can switch branches.
Aborting
Ini adalah apa yang saya .gitignore file terlihat seperti:
.bundle
.DS_Store
db/*.sqlite3
log/*.log
tmp/**/*
public/system/images/*
public/system/avatars/*
Bagaimana cara mendapatkan kerja ini sehingga saya bisa beralih cabang tanpa menghapus file-file tersebut?
Jika saya membuat perubahan, hal itu akan mempengaruhi file-file tersebut? Dengan kata lain, jika saya datang kembali untuk cabang ini kemudian akan semuanya sempurna hingga terakhir saya lakukan?
Saya don't ingin kehilangan file-file tersebut, saya hanya don't ingin mereka dilacak.
Aku memukul pesan ini juga. Dalam kasus saya, saya didn't ingin menyimpan file, jadi ini bekerja untuk saya:
git clean -d -f .
git clean -d -f ""
Jika anda juga ingin menghapus file yang diabaikan oleh git, kemudian jalankan perintah berikut.
git clean -d -fx .
git clean -d -fx ""
http://www.kernel.org/pub/software/scm/git/docs/git-clean.html
-x
berarti mengabaikan file-file tersebut juga dihapus serta file yang tidak diketahui untuk git.
-d
berarti menghapus terpantau direktori selain tidak terlacak file.
-f
diperlukan untuk memaksa untuk menjalankan.
Sepertinya anda ingin file yang diabaikan tetapi mereka sudah berkomitmen. .gitignore tidak memiliki efek pada file yang sudah ada di repo sehingga mereka perlu dihilangkan dengan git rm --cached
. The --cached
akan mencegah hal itu memiliki efek pada copy pekerjaan anda dan itu hanya akan menandai sebagai dihapus waktu berikutnya anda melakukan. Setelah file-file tersebut dihapus dari repo kemudian .gitignore akan mencegah mereka dari yang menambahkan lagi.
Tapi anda memiliki masalah lain dengan anda .gitignore, anda berlebihan menggunakan wildcard dan menyebabkan ia pertandingan kurang dari yang anda harapkan. Bukannya memungkinkan mengubah .gitignore dan mencoba ini.
.bundle
.DS_Store
db/*.sqlite3
log/*.log
tmp/
public/system/images/
public/system/avatars/
Git memberitahu anda bahwa ia ingin membuat file (bernama publik/system/gambar/9/...
dll), tetapi anda sudah memiliki file yang ada di direktori tersebut yang tidak't dilacak oleh Git. Mungkin orang lain menambahkan file-file repositori Git, dan ini adalah pertama kalinya anda telah beralih ke cabang?
Ada's mungkin alasan mengapa file tersebut di mengembangkan
cabang tetapi tidak dalam anda saat ini cabang. Anda mungkin harus meminta kolaborator anda mengapa itu.
bagaimana cara mendapatkan kerja ini sehingga saya bisa beralih cabang tanpa menghapus file-file tersebut?
Anda dapat't melakukannya tanpa membuat file hilang entah bagaimana. Anda bisa mengubah nama umum
untuk my_public
atau sesuatu untuk sekarang.
jika saya datang kembali untuk cabang ini kemudian akan semuanya sempurna hingga terakhir saya lakukan?
Jika anda melakukan perubahan anda, Git tidak't kehilangan mereka. Jika anda don't melakukan perubahan, maka Git akan mencoba sangat keras tidak untuk menimpa pekerjaan yang telah anda lakukan. Yang's apa Git adalah peringatan anda tentang di contoh pertama di sini (ketika anda mencoba untuk beralih cabang).
Ini bekerja untuk saya.
1. git fetch --all
2. git reset --hard origin/{branch_name}
Bagi mereka yang membutuhkan sesuatu yang kurang menjangkau-jauh dari Scott Schafer jawaban,
git clean -f
kemungkinan akan bekerja. Saya menyarankan untuk menjalankan highly
git clean --dry-run
pertama. Perintah tersebut akan menampilkan daftar file yang Git akan menghapus jika anda menjalankan git bersih -f
, dan mungkin akan menyelamatkan anda rasa sakit dari secara tidak sengaja menghapus sesuatu yang anda tidak ingin.
Lihat Tumpukan ini Oveflow jawaban atau docs untuk informasi lebih lanjut tentang git bersih
.
Sayangnya tidak git rm --cached
atau git bersih -d -fx ","
melakukannya untuk saya.
Solusi saya akhirnya mendorong saya cabang ke remote, kloning baru repo, maka lakukan saya bergabung di repo. Orang lain mengakses repo harus melakukan hal yang sama.
Moral dari cerita ini: gunakan .gitignore
file dari awal.
Aku punya masalah yang sama ketika memeriksa ke cabang yang didasarkan pada sebelumnya melakukan. Git menolak untuk checkout karena tidak terlacak file.
I've menemukan solusi dan saya berharap ini akan membantu anda terlalu.
Menambahkan direktori terpengaruh untuk .gitignore
dan mengeluarkan $ git rm -r --cached
pada mereka tampaknya tidak cukup.
Misalnya anda ingin membuat cabang berbasis sebelumnya melakukan K untuk menguji beberapa hal dan datang kembali untuk versi saat ini. Aku akan melakukannya dalam langkah-langkah berikut:
Setup tidak terlacak file:
edit .gitignore
dan menerapkan $ git rm -r --cached
pada file dan direktori yang anda inginkan git untuk mengabaikan. Tambahkan juga file .gitignore
dirinya .gitignore ' dan don't lupa untuk mengeluarkan
$ git rm -r --cached .gitignore`. Ini akan memastikan mengabaikan perilaku git daun yang sama di awal berkomitmen.
Melakukan perubahan yang baru saja anda buat:
$ git add -A
$ git commit
$ git log > ../git.log
$ git reset --hard version_k
$ git branch commit_k_branch
$ git checkout commit_k_branch
Apakah barang-barang anda dan melakukan hal itu
Checkout kembali ke master lagi
$ git checkout master
$ git reset current_version
atau $ git reset ORIG_HEAD
git reset --keras KEPALA
CATATAN!
Jangan melewatkan berikutnya-untuk-terakhir langkah (seperti e. g. $ git reset --hard ORIG_HEAD
) jika tidak terlacak file git mengeluh atas akan tersesat.
Saya juga memastikan file git mengeluh tentang tidak dihapus. Saya menyalinnya ke file teks dan mengeluarkan perintah $ for i in $(kucing ../test.txt); apakah ls -ahl $i; dilakukan
Jika anda checkout untuk cabang yang disebutkan di atas sekali lagi, jangan lupa untuk mengeluarkan $ git status
untuk memastikan tidak ada perubahan yang tidak diinginkan muncul.
Hal ini terjadi pada saya di Windows 8 sistem, menggunakan Git dari command prompt. Seluruh tim saya menggunakan TFS, dan saya menggunakan Microsoft's git-tf untuk mendorong/menarik antara TF dan lokal saya repositori Git.
Masalah muncul karena beberapa file-file yang telah diganti hanya untuk mengubah kasus mereka. Apa yang tampaknya terjadi adalah ini:
status
, saya tidak't melihat perubahan apapun, karena di Windows command prompt nama-nama file yang sama.Solusi yang paling sederhana bagi saya adalah:
git checkout
versi sebelumnya proyek, nah sebelum file-file yang pernah ditambahkan.git checkout
versi terbaru proyek, dengan benar file casing.Dalam kasus saya, masalahnya adalah submodul. master
digabung dengan cabang lain yang ditambahkan baru submodule untuk proyek ini. Cabang saya mencoba untuk checkout didn't memiliki itu, yang's mengapa git mengeluh tentang tidak terlacak file dan tidak ada yang lain solusi yang disarankan bekerja untuk saya. Aku memaksa kasir untuk saya cabang baru, dan menarik master.
git checkout -f my_branch
git pull asal master
git submodule update --init
Saya juga menghadapi masalah yang sama dan saya mencoba semua solusi yang diposting di atas tetapi tidak't bekerja
Masalah yang disebabkan ketika saya berganti nama menjadi saya onMusicUpdateListener.java
untuk OnMusicUpdateListener.java
di mengembangkan
cabang.
Sekarang master
telah onMusicUpdateListener.java
dan mengembangkan
memiliki file yang sama sebagai OnMusicUpdateListener.java
Sekarang setiap kali saya beralih ke guru itu memberi saya sebuah kesalahan
The following untracked working tree files would be overwritten by checkout
dan kemudian hal dibatalkan
.
Dalam rangka untuk memecahkan masalah ini, saya paksa memeriksa
master
cabang
dan kemudian berganti nama saya onMusicUpdateListener.java
untuk OnMusicUpdateListener.java
, penting
dan kemudian bergabung
dengan mengembangkan
cabang.
Kemudian saya diperbarui mengembangkan
cabang penggabungan
menjadi master
dan sekarang semuanya sudah kembali normal dan masalah ini diselesaikan.
Dua fungsi(git rm --cached, git checkout -f lain-branch) TIDAK bekerja untuk saya.
Sebaliknya, saya secara fisik dihapus file (dalam eclipse) seperti apa Git memberitahu anda untuk melakukan; Segera memindahkan atau menghapus mereka sebelum anda dapat beralih di cabang-cabang.
dan kemudian saya tambahkan/melakukan hal itu.
dan kemudian aku ditarik dan itu bekerja!
Memindahkan file, bukan hapus
Salah satu cara untuk menghindari menghapus file adalah untuk memindahkan mereka sebagai gantinya. Misalnya:
cd "`git rev-parse --show-toplevel`"
git checkout 2>&1 | while read f; do [ ! -e "$f" ] || mv "$f" "$f".bak; done
yang's mudah untuk memecahkan, git adalah mengatakan bahwa anda memiliki file yang sama di kedua cabang, oleh karena itu anda harus menghapus file-file yang spesifik dari master cabang dan kemudian anda akan dapat menggabungkan:
git merge "cabang anda"
Saya berharap itu bekerja untuk anda, aku hanya soal kesalahan saya. kesalahan saya adalah:
kesalahan: berikut ini terpantau bekerja pohon file akan ditimpa oleh gabungan: .vs/slnx.sqlite Silakan memindahkan atau menghapus mereka sebelum anda bergabung. Batal
Sekarang bekerja! Dalam kasus saya .vs/slnx.sqlite dihasilkan oleh visual studio, saya perlu untuk menutupnya sebelum menghapusnya.