.gitignore и "Следните непроследени файлове от работното дърво ще бъдат пренаписани от checkout"
Затова добавих папка в моя файл .gitignore.
След като направя git status
, той ми казва
# On branch latest
nothing to commit (working directory clean)
Въпреки това, когато се опитам да променя клонове, получавам следното:
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
Ето как изглежда моят .gitignore файл:
.bundle
.DS_Store
db/*.sqlite3
log/*.log
tmp/**/*
public/system/images/*
public/system/avatars/*
Как да направя така, че да мога да сменям клоновете, без да изтривам тези файлове?
Ако направя промяна, тя ще се отрази ли на тези файлове? С други думи, ако след това се върна в този клон, дали всичко ще бъде перфектно до последния ми commit?
Не искам да губя тези файлове, просто не искам да ги проследявам.
788
3
ВНИМАНИЕ: това ще изтрие непроследените файлове, така че не е добър отговор на зададения въпрос.
Попаднах и на това съобщение. В моя случай не исках да запазвам файловете, така че това работи за мен:
git 2.11 и по-нови
older git
Ако искате да премахнете и файловете, игнорирани от git, изпълнете следната команда.
БЪДЕТЕ ПРЕДУПРЕДЕНИ!!! ТОВА НАЙ-ВЕРОЯТНО ЩЕ УНИЩОЖИ ПРОЕКТА ВИ, ИЗПОЛЗВАЙТЕ ГО САМО АКО ЗНАЕТЕ НА 100% КАКВО ПРАВИТЕ
git 2.11 и по-нови
older git
http://www.kernel.org/pub/software/scm/git/docs/git-clean.html
-x
означава, че игнорираните файлове също се премахват, както и файловете, непознати за git.-d
означава, че освен непроследените файлове се премахват и непроследените директории.-f
се изисква, за да се изпълни принудително.Изглежда, че искате файловете да бъдат игнорирани, но те вече са били предадени. .gitignore няма ефект върху файлове, които вече са в репото, така че те трябва да бъдат премахнати с
git rm --cached
. Включването на--cached
ще предотврати какъвто и да е ефект върху работното ви копие и то просто ще се маркира като премахнато при следващия commit. След като файловете бъдат премахнати от репото, .gitignore ще предотврати повторното им добавяне.Но имате и друг проблем с .gitignore - използвате прекалено много заместващи знаци и това води до по-малки съвпадения, отколкото очаквате. Вместо това нека променим .gitignore и опитаме това.
Git ви казва, че иска да създаде файлове (с име
public/system/images/9/...
и т.н.), но вие вече имате съществуващи файлове в тази директория, които не се следят от Git. Може би някой друг е добавил тези файлове в хранилището на Git, а вие за първи път преминавате към този клон?Вероятно има някаква причина тези файлове да са в клона
develop
, но не и в текущия клон. Може да се наложи да попитате сътрудниците си защо това е така.Не можете да го направите, без да накарате файловете да изчезнат по някакъв начин. Засега можете да преименувате
public
наmy_public
или нещо подобно.Ако предадете промените си, Git няма да ги загуби. Ако не предадете промените си, Git ще се постарае наистина много *да не презапише работата, която сте извършили. Това е, за което Git ви предупреждава в първия случай тук (когато сте се опитали да смените клона).