.gitignore dan "berikut ini terpantau bekerja pohon file akan ditimpa oleh checkout"

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.

Mengomentari pertanyaan (4)

PERINGATAN: ini akan menghapus terpantau file, sehingga's tidak menjawab pertanyaan yang diajukan.

Aku memukul pesan ini juga. Dalam kasus saya, saya didn't ingin menyimpan file, jadi ini bekerja untuk saya:

git 2.11 dan yang lebih baru

git clean  -d  -f .

yang lebih tua git

git clean  -d  -f ""

Jika anda juga ingin menghapus file yang diabaikan oleh git, kemudian jalankan perintah berikut.

BERHATI-HATILAH!!! INI PALING MUNGKIN MENGHANCURKAN PROYEK ANDA, GUNAKAN HANYA JIKA ANDA TAHU 100% APA YANG ANDA LAKUKAN

git 2.11 dan yang lebih baru

git clean  -d  -fx .

yang lebih tua git

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.

Komentar (28)

Peringatan: Ini akan menghapus file lokal yang tidak diindeks

Hanya kekuatan itu : git checkout -f lain-cabang

Komentar (6)
Larutan

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/
Komentar (7)

Jika anda're pada OS X, mungkin karena file's nama yang memiliki karakter tertentu change case. Cobalah pengaturan berikut config pilihan:

git config core.ignorecase true
Komentar (7)

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).

Komentar (2)

Ini bekerja untuk saya.

 1. git fetch --all
 2. git reset --hard origin/{branch_name}
Komentar (5)

Ada perintah untuk tugas yang rumit ini (secara permanen menghapus terpantau file)

git clean -i

Kemudian git pull akan lakukan.

Komentar (0)

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.

Komentar (0)

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.

Komentar (0)

Jika anda ingin cepat menyelesaikan pertanyaan ini,Anda dapat menggunakan perintah ini:

git checkout -f dev
Komentar (4)

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:

  1. 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.

  2. Melakukan perubahan yang baru saja anda buat:

$ git add -A
$ git commit

  1. Menyimpan log saat ini, jika tidak, anda mungkin mendapatkan masalah datang kembali untuk saat ini versi

$ git log > ../git.log

  1. Hard reset untuk melakukan K

$ git reset --hard version_k

  1. Membuat cabang berdasarkan komit K

$ git branch commit_k_branch

  1. Checkout ke cabang

$ git checkout commit_k_branch

  1. Apakah barang-barang anda dan melakukan hal itu

  2. Checkout kembali ke master lagi

$ git checkout master

  1. Reset untuk Versi saat ini lagi

$ git reset current_version atau $ git reset ORIG_HEAD

  1. Sekarang anda dapat me-reset keras KEPALA

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.

Komentar (0)

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:

  • File diperiksa dengan campuran casing di nama mereka.
  • Di kemudian melakukan ini, nama file yang berubah untuk semua huruf.
  • git-tf awalnya punya file dalam kasus campuran.
  • Saat file yang berganti nama menjadi lower-case, git-tf didn't mendapatkan file karena untuk Windows 8 orang-nama-nama file yang sama.
  • Sejak Git adalah case-sensitive, ini mengeluh bahwa saya punya kasus dicampur file yang tidak't dalam kontrol sumber. Tapi menggunakan git 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.
  • Kemudian git checkout versi terbaru proyek, dengan benar file casing.
Komentar (1)

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
Komentar (0)

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.

Komentar (1)

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!

Komentar (0)

Dalam kasus saya git rm --cached didn't bekerja. Tapi aku mendapatkannya dengan git rebase

Komentar (0)

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
Komentar (0)

Ini bisa menjadi masalah izin,

perubahan kepemilikan,

sudo chown -v -R usr-name:group-name folder-name
Komentar (1)

2 file dengan nama yang sama tapi kasus yang berbeda mungkin menjadi masalah.

Anda dapat Menghapus satu file atau mengubah nama itu. Ex:

Pdf.html.twig (The GOOD one)

pdf.html.twig (The one I deleted)
Komentar (0)

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.

Komentar (0)