# ``git clean -xdf'' and ``make clean''

3 messages from 2017-02-07 to 2017-02-07. Participants: Hongyi Zhao, Cornelius Weig, Jacob Keller.
Thread: https://gitlist.dev/t/45072

## Hongyi Zhao, 2017-02-07 14:17

Subject: ``git clean -xdf'' and ``make clean''
Message-ID: <CAGP6PO+qD6eRkKbWAxOfiqUQw8o+dOfgwgvt_8OxHQ5ocAopEQ@mail.gmail.com>
URL: https://gitlist.dev/e/CAGP6PO%2BqD6eRkKbWAxOfiqUQw8o%2BdOfgwgvt_8OxHQ5ocAopEQ%40mail.gmail.com

```
Hi all,

In order to delete all of the last build stuff, does the following two
methods equivalent or not?

``git clean -xdf'' and ``make clean''

Regards
-- 
Hongsheng Zhao <hongyi.zhao@gmail.com>
Institute of Semiconductors, Chinese Academy of Sciences
GnuPG DSA: 0xD108493

```

## Cornelius Weig, 2017-02-07 15:07

Subject: Re: ``git clean -xdf'' and ``make clean''
Message-ID: <fe8595aa-0395-e948-13e9-f952541d106e@tngtech.com>
URL: https://gitlist.dev/e/fe8595aa-0395-e948-13e9-f952541d106e%40tngtech.com
In-Reply-To: <CAGP6PO+qD6eRkKbWAxOfiqUQw8o+dOfgwgvt_8OxHQ5ocAopEQ@mail.gmail.com>

```
On 02/07/2017 03:17 PM, Hongyi Zhao wrote:
> Hi all,
> 
> In order to delete all of the last build stuff, does the following two
> methods equivalent or not?
> 
> ``git clean -xdf'' and ``make clean''

No, it is not equivalent.

* `make clean` removes any build-related files (assuming that the
`clean` target is properly written). To see exactly what it would do,
run `make clean -n`. Judging from your question, I think this is what
you want to do.

* `git clean -xdf` would remove any files that git does not track. This
also includes build-related files, but also any other files that happen
to be in your working directory. For example, any output from `git
format-patch` would be removed by this, but not `make clean`.

```

## Jacob Keller, 2017-02-07 19:35

Subject: Re: ``git clean -xdf'' and ``make clean''
Message-ID: <CA+P7+xpesQVS5qZJZ5wd31eJDLmb5j0Xdq_rwajjoskB07ELfg@mail.gmail.com>
URL: https://gitlist.dev/e/CA%2BP7%2BxpesQVS5qZJZ5wd31eJDLmb5j0Xdq_rwajjoskB07ELfg%40mail.gmail.com
In-Reply-To: <fe8595aa-0395-e948-13e9-f952541d106e@tngtech.com>

```
On Tue, Feb 7, 2017 at 7:07 AM, Cornelius Weig
<cornelius.weig@tngtech.com> wrote:
> On 02/07/2017 03:17 PM, Hongyi Zhao wrote:
>> Hi all,
>>
>> In order to delete all of the last build stuff, does the following two
>> methods equivalent or not?
>>
>> ``git clean -xdf'' and ``make clean''
>
> No, it is not equivalent.
>
> * `make clean` removes any build-related files (assuming that the
> `clean` target is properly written). To see exactly what it would do,
> run `make clean -n`. Judging from your question, I think this is what
> you want to do.
>
> * `git clean -xdf` would remove any files that git does not track. This
> also includes build-related files, but also any other files that happen
> to be in your working directory. For example, any output from `git
> format-patch` would be removed by this, but not `make clean`.

Make clean can run arbitrary code, and really depends on the
implementation. git clean -xdf will result in all non-tracked files
being removed, which should restore you to a pristine pre-build state.
However, this can have unfortunate side effect of destroying files
which you might not expect.

Properly written, a make clean shouldn't remove anything except what
could be regenerated by make. But that's just a strong convention.

Regards,
Jake

```
