I have a tracked file in a git repository. How do I untrack this file without deleting it using magit?
3 Answers
Hitting i
will gitignore the file and untrack it from the git repository.
Behind the scenes, it does git rm --cached
- More info about this git command from a StackOverflow question
-
Note that you don't need to add it to the gitignore file. Just discard(I believe by default "k") changes on gitignore after i. Commented Feb 17, 2015 at 14:51
-
Discarding (using
k
) just reverts the file contents to its last committed state; it does not untrack it. To test it, modify the file you just discarded, hitg
in the magit buffer to refresh the contents and you will see that file appear once again in the Unstaged section. Commented Feb 17, 2015 at 14:56 -
-
Alright, I now get what you are saying. First hit
i
on the file you want to untrack and then hitk
on.gitignore
. For my use case, if there's a file I want to untrack, I usually want to gitignore it too. That way my magit buffer stays clean and empty :) Commented Feb 17, 2015 at 15:01 -
3If you don't need to add the file to gitignore, use K (that's uppercase k). Commented May 5, 2016 at 16:26
In the Magit buffer, hit K (uppercase k) on the file. It works with magit 2.3; I don't know for earlier versions.
-
f6a6f40fe8321f3ceb4b8ea9581e450149fea66a, looks like it's since 2.1– npostavsCommented Feb 17, 2016 at 22:12
-
4I feel like this should be the accepted answer for the question asked, even though the others were helpful.– salotzCommented May 23, 2016 at 21:19
Use M-x magit-file-untrack
from a buffer visiting a tracked file or from a Magit buffer. When the buffer visits a file then that file is offered as default choice.
When point is on a file in a Magit buffer, then that is also offered as default. You might also want to add the new magit-insert-tracked-files
to magit-status-sections-hook
, then a tree of all tracked files is inserted into the status buffer (but doing so might not be good for performance in big repositories).