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...'\""
}
]
}