简体   繁体   中英

Strange output of git diff to file in Ubuntu

Ubuntu 13.04. I want to create a patch and there is no problem when I'm using Netbeans or other IDE but when I run in command line:

git diff > 1.patch

and then

cat 1.patch

output looks like this:

diff --git a/sites/all/modules/pet/pet.module b/sites/all/modules/pet/pet.module
index adfd273..1091090 100755
--- a/sites/all/modules/pet/pet.module
+++ b/sites/all/modules/pet/pet.module
@@ -71,7 +71,7 @@ function pet_access($op, $type = NULL, $account = NULL) {
 /**
  * Implements hook_permission().
  */
-function pet_permission() {  
+function pet_permission() {
   $permissions = array(
     'administer previewable email templates' =>  array(
       'title' => t('Administer previewable email templates'),
@@ -183,26 +183,26 @@ function pet_lookup_uid($mail) {
 /**
  * Send tokenized email to a list of recipients.
  *
- * Given a list of recipients, and an optional node id, perform token 
+ * Given a list of recipients, and an optional node id, perform token
  * substitution and send an email to each. The node substitutions, if any,
  * are the same in each email sent.  The user tokens, if any are custom based
- * on the account (if any) associated with each email.  
+ * on the account (if any) associated with each email.
  *
  * @param $name
  *   The unique name of the PET template.
  * @param $recipients
  *   An array of at least one recipient in one of two formats:
  *      1. a simple email address, in which case the uid is looked up
- *      2. an array('mail' => <email address>, 'uid' => <uid>) in which case 
+ *      2. an array('mail' => <email address>, 'uid' => <uid>) in which case
  *         the uid is already available (more efficient)
  * @param $options
  *   An array of options as follows:
  *      nid - An optional node id for token substitutions.
- *      subject - An optional subject which if provided will override the 
+ *      subject - An optional subject which if provided will override the
  *        subject in the PET.
  *      body - An optional body which if provided which will override the body
  *        in the PET.
- *      body_plain - An optional plain text body which if provided which will 
+ *      body_plain - An optional plain text body which if provided which will
  *        override the plain text body in the PET.
  *      from - An optional from email which if provided which will override the
  *        from in the PET (which in turn overrides the site default).
@@ -221,12 +221,12 @@ function pet_send_mail($name, $recipients, $options) {
     watchdog('pet', 'At least one recipient must be provided for PET %name.', array('%name' => $name), WATCHDOG_NOTICE);
     return;
   }

but gedit shows this:

[1mdiff --git a/sites/all/modules/pet/pet.module b/sites/all/modules/pet/pet.module[m
[1mindex adfd273..1091090 100755[m
[1m--- a/sites/all/modules/pet/pet.module[m
[1m+++ b/sites/all/modules/pet/pet.module[m
[36m@@ -71,7 +71,7 @@[m [mfunction pet_access($op, $type = NULL, $account = NULL) {[m
 /**[m
  * Implements hook_permission().[m
  */[m
[31m-function pet_permission() {  [m
[32m+[m[32mfunction pet_permission() {[m
   $permissions = array([m
     'administer previewable email templates' =>  array([m
       'title' => t('Administer previewable email templates'),[m
[36m@@ -183,26 +183,26 @@[m [mfunction pet_lookup_uid($mail) {[m
 /**[m
  * Send tokenized email to a list of recipients.[m
  *[m
[31m- * Given a list of recipients, and an optional node id, perform token [m
[32m+[m[32m * Given a list of recipients, and an optional node id, perform token[m
  * substitution and send an email to each. The node substitutions, if any,[m
  * are the same in each email sent.  The user tokens, if any are custom based[m
[31m- * on the account (if any) associated with each email.  [m
[32m+[m[32m * on the account (if any) associated with each email.[m
  *[m
  * @param $name[m
  *   The unique name of the PET template.[m
  * @param $recipients[m
  *   An array of at least one recipient in one of two formats:[m
  *      1. a simple email address, in which case the uid is looked up[m
[31m- *      2. an array('mail' => <email address>, 'uid' => <uid>) in which case [m
[32m+[m[32m *      2. an array('mail' => <email address>, 'uid' => <uid>) in which case[m
  *         the uid is already available (more efficient)[m
  * @param $options[m
  *   An array of options as follows:[m
  *      nid - An optional node id for token substitutions.[m

.

It's colorized. <kbd>Esc</kbd>[36m is an ANSI escape sequence for a foreground color change.

1. Disable color

git diff --color=never

2. Or change the config

git config color.ui auto

This results in .git/config having:

[color]
    ui = auto

auto indicates that color is automatically enabled when output is to a terminal, but not if output is to a file/pipe.

3. Fixing existing patches

Look at AnsiFilter to remove ANSI escape sequences from existing patch files.

I follow this link enter link description here to see color:

$ export LESS="-eirMX"

You may need to edit .profile or .bashrc to permanently set environmental variables. For straight forward, all you need to do is to append the above line to one of the 3 following files:

~/.profile
~/.bash_profile
/etc/profile 

你可以尝试一下,它对我有用:

git config --global color.diff auto

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM