Contents

linux下gitignore c++的生成文件

问题产生

一般我们不要git上传编译后的文件,github也不鼓励上传二进制文件,而且上传了编译文件还会拖慢另外设备的同步项目的速度,所以我不想上传我的编译生成的二进制文件, 但是因为自己在linux下生成c++的编译文件之前的配置都是没有后缀的,所以gitignore不好检测排除

解决

方案一

  • 直接头铁去网上找了很多"如何gitignore 忽略上传二进制文件",然后按照大佬们说的gitignore配置了好久
  • 最终配置成下面这样,但是git上传记录证明我的配置不合理,失败了…
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
### 忽略所有文件和目录
*

### 增加指定扩展名文件和Makefile文件
#### C && makefile
!*.cpp
!*.c
!*.h
!Makefile

#### py
!*.py

#### md
!*.md

#### pic
!*.png
!*.jpg

#### some others
!*.sh
!*.bat
!*.gitignore

方案二

  • 想到了linux下可执行文件不是还有.out文件吗?
  • 后面在网上查了一下发现:linux下可执行文件不像windows那样要看后缀,而是看属性是否是可执行的
  • 于是立马更该自己的sublime的c++编译配置,最种git提交成功忽略二进制.out文件
  • 最终的gitignore如下
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
## Cpp:
*.exe

## VScode:
build
.vscode

## Python
__pycache__
*.pyc

## 2019年9月22日22:01:00 发现网上找的上面的操作并没有成功,然后自己去网上探索,最后发现linux下的可执行文件不看后缀,而是看属性,所以自己刻意在编译中设置后缀,然后gitignore那个后缀就完美了

## linux cpp on what I set the sa of cpp
*.out

送一份linux下Sublime的C++编译配置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
{ 
    // 2019年09月22日23:33:32 为了gitignore修改后缀
    // "shell_cmd": "g++ '${file}' -o '${file_path}/${file_base_name}'", 
    "shell_cmd": "g++ '${file}' -o '${file_path}/${file_base_name}.out'", 
    "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$", 
    "working_dir": "${file_path}", 
    "selector": "source.c, source.c++", 
   
    "variants": 
    [ 
        { 
            "name": "Build & Run", 
            // "shell_cmd": "x-terminal-emulator  -e bash -c \"g++ '${file}' -o '${file_path}/${file_base_name}' ; '${file_path}/${file_base_name}' ; read -p '\nPress ENTER or type command to continue...'\"" 
            "shell_cmd": "x-terminal-emulator  -e bash -c \"g++ '${file}' -o '${file_path}/${file_base_name}.out' ; '${file_path}/${file_base_name}.out' ; read -p '\nPress ENTER or type command to continue...'\"" 
        }, 
   
        { 
            "name": "Build Only", 
            // "shell_cmd": "g++ '${file}' -o '${file_path}/${file_base_name}'" 
            "shell_cmd": "g++ '${file}' -o '${file_path}/${file_base_name}.out'" 
        }, 
   
        { 
            "name": "Run Only", 
            // "shell_cmd": "x-terminal-emulator  -e bash -c \"'${file_path}/${file_base_name}' ; read -p '\nPress ENTER or type command to continue...'\"" 
            "shell_cmd": "x-terminal-emulator  -e bash -c \"'${file_path}/${file_base_name}.out' ; read -p '\nPress ENTER or type command to continue...'\"" 
        } 
    ] 
}