初学者在ubuntu下安装使用git(上)
一 git的安装测试
在Ubuntu系统下的bash中输入git,如果提示没有安装的话,用命令 sudo apt-get install git 安装git,安装完成之后通过 git –version 来验证是否安装成功,安装成功会有如下显示。

二 创建文件夹
在ubuntu系统中一个显示文件夹以及文件的功能叫tree,我觉得这个功能很好,像是一个思维导图一样,把文件的所属关系列举的很清楚。通过 sudo apt-get install tree 命令安装tree。
安装完成之后,首先建一个文件夹把所有的程序都放进去,命名为***rocedu;每学一门课程就在这个文件夹下建一个该课程的文件夹并用该课程的名字命名。
在该课程的文件夹下分别创建下列文件夹,。
src:存放源代码文件;
include: 存放头文件;
bin:存放编译后的目标文件、可执行文件等;
lib:存放项目所需的静态库、动态(共享)库;
res: 存放项目所需的图标、声音、图片等资源;
docs: 存放项目相关的参考资料、帮助文档;
dist:存放打包,发布以后的代码。
之后通过 touch README Makefile 命令新建README 和Makefile两个文件。
README 是对项目的简要介绍:licence、功能、编译环境等,详细的要在docs下有帮助文档
Makefile: 实现项目编译自动化
建这些文件夹的目的就是为了方便程序的管理,方便上传和查找修改。不同的文件放在不同的文件夹下,之前用过VS和eclipse的应该会发现这些文件夹就是在你新建项目的时候都会自动生成这些文件夹,分别来放其他的东西,要养成良好的习惯,方便以后使用。
输入命令tree就会出现以下显示:

三 在Ubuntu系统下进行编程并进行git
1 在vim中写程序
在src文件夹下放程序的源码,按章节分别建文件夹,例如第一章的hello world程序就放在src/01intro下,在src下新建01intro文件夹,使用 vim src/01intro/hello.c 命令进入vim写C代码。

写完之后通过: wq回车保存hello.c并退出,然后用命令 gcc src/01intro/hello.c –o bin/hello 来进行编译。上一条命令中“src/01intro/hello.c”是要编译的程序的路径,“bin/hello”是生成可执行程序并放在bin目录下,命名为“hello”,然后可以用.bin/hello命令来执行hello程序。上述就是用vim写程序并且编译的过程。
之后,通过git config对git进行简单配置,显示自己的个人信息。

2 用git cheatsheet进行项目管理
git cheatsheet中有常用的配置项:

我们可以通过命令git init把项目纳入git管理,以后就是常用的 git add ; git commit 了,使用git commit时一定要注意解释刚才做了什么。
例如:
git commit -m "initiate csapp2e project with hello world program" 说明“我们用hello world程序初始化了CSAPP2E这个项目”。"initiate csapp2e project with hello world program"就是解释做了什么工作。
在git cheatsheet中常用的git查看命令是 git log ,会显示出所有的历史记录。

3 用shell脚本简化编译运行程序
项目目录结构建立之后方便了程序的存放查找,但是文件目录太多,编译是相对路径太长,不方便记忆。例如: gcc src/01intro/hello.c -o bin/hello 。因此可以通过shell脚本简化编译运行程序。
用命令 vi compile.sh 进入compile.sh中编写脚本文件,“compile”是该文件的命名。

脚本是编译,运行程序的命令,一个脚本中可以写多个程序,每次运行脚本的时候脚本中的程序都会运行。shell脚本中第一行是固定写法,#后面是注释。

脚本写完之后,在用命令 ./compile.sh 就可以运行hello程序了。

源代码产生的中间文件不需要纳入git管理,比如bin。因此可以使用 .gitignore文件把不纳入git管理的文件、文件夹。

# 号后边是注释说明,“bin/”指明不把bin/纳入git管理。
跟之前一样,每次完成一个小任务之后,都要进行 git add . 和 git commit 一下,注释一下自己做了什么事,养成良好习惯。

初学者在ubuntu下安装使用git(上)的更多相关文章
- 初学者在ubuntu下安装使用git(下)
4.将代码传到oschina上去 之前已经将git配置完成了,现在通过ssh的方式访问资源库,先要用命令 ssh-keygen –C '你的邮箱' –t rsa .这样就会在ssh文件夹下建一相应的密 ...
- Ubuntu下安装mod_python报错(GIT错误)
Ubuntu下安装mod_python3.4.1版本报出如下错误: writing byte-compilation script '/tmp/tmpE91VXZ.py' /usr/bin/pytho ...
- ubuntu下安装git,sublime,nodejs
用的是VMware10.0版本的虚拟机,很早之前下载的今天就直接用了,安装挺简单记得需要一个序列号.在这里:http://mirrors.163.com/ubuntu-releases/15.04/u ...
- 来杯Caffe——在ubuntu下安装Caffe框架并测试
Caffe是一种深度学习框架...blablabla...... Caffe要在ubuntu下安装 1. 安装依赖 sudo apt-get install libatlas-base-dev sud ...
- Ubuntu下安装open-falcon-v0.2.1
在Ubuntu下安装open-falcon和Centos下安装的方法有点区别,因为Ubuntu使用的包管理器是apt-get,而Centos下使用的是Yum,建议不要再Ubuntu下使用yum 建议自 ...
- CAFFE(一):Ubuntu 下安装CUDA(安装:NVIDIA-384+CUDA9.0+cuDNN7.1)
(安装:NVIDIA-384+CUDA9.0+cuDNN7.1) 显卡(GPU)驱动:NVIDIA-384 CUDA:CUDA9.0 cuDNN:cuDNN7.1 Ubuntu 下安装CUDA需要装N ...
- 在Ubuntu下安装ovs-dpdk
在Ubuntu下安装ovs-dpdk 参考资料:https://software.intel.com/zh-cn/articles/using-open-vswitch-with-dpdk-on-ub ...
- TODO:Ubuntu下安装Node
TODO:Ubuntu下安装Node Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又高 ...
- Ubuntu 下安装 Mysql
这里讲用Ubuntu下安装MySql ubuntu上安装mysql非常简单只需要几条命令就可以完成. 1. sudo apt-get install mysql-server 2. apt-get ...
随机推荐
- ognl
一:什么是值栈 1:ValueStack:值栈.其本身的数据结构是一个栈,使用者可以把一些对象存入栈中.然后使用动态的表达式来读取bean的属性.由于值栈中可能有多个对象 值栈会按照对象出栈的顺序依次 ...
- 原生js实现jquery库中选择器的功能(jquery库封装一)
今天是2017.1.1,新的一天,新的一年,新的一年里继续夯实基础知识,在工作中多些项目,多思考,多总结,前端是不断更新,在更新的过程中也是发现乐趣和挑战自我的过程,希望年轻的我和年轻的javascr ...
- C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 能支撑10万以上客户端的数据同步下载问题
庞大的业务系统,特别是需要有离线作业操作支持的核心业务系统,需要有强大的基础数据同步功能,基础数据有在增加.有在变动.有在失效,同时有大量的客户端全天侯的在连接服务器.不间断的在处理核心数据. 经过2 ...
- npm设置prefix 路径
Windows下的Nodejs npm路径是appdata,很不爽,想改回来,但是在cmd下执行以下命令也无效 npm config set cache "D:\nodejs\node_ca ...
- perl 调用shell脚本
perl调用shell命令 perl调用shell shell调用perl Perl执行shell命令的几种方式及其区别
- jQuery下拉框扩展和美化插件Chosen
Chosen 是一个支持jquery的select下拉框美化插件,它能让丑陋的.很长的select选择框变的更好看.更方便.不仅如此,它更扩展了select,增加了自动筛选的功能.它可对列表进行分组, ...
- mysql服务器监控参数总结
1)主机健康监控:网络通信.软硬件错误.磁盘空间.内存使用 2)mysql健康监控: 服务端口(telnet尝试连接).mysqld和mysqld_safe进程.errorlog和复制状态 3)主机性 ...
- 关于__int128
定义 __int128 n,r,g,b,T; __int128 ans; __int128 f[][]; 取最大值函数 __int128 getmax(__int128 a,__int128 b){ ...
- react.js 生命周期componentDidUpdate的另类用法:防止页面过渡刷新
场景:数据新增成功之后,需要返回原来的查询表,这时候的查询,需要使用react的生命周期:componentDidUpdate componentDidUpdate() 这个生命周期的作用是当prop ...
- Excel(Access)文件共享锁定数溢出(Error 3052)的解决方法
Excel或Access均可能会提示:文件共享锁定数溢出(Error 3052),主要版本为office 2003,在其他版本上未遇到.错误提示如下: Microsoft JET Database E ...