目录
1.git的简单理解
git由linux之父Linus Torvalds开发,官方网站https://git-scm.com/
简单来说是进行版本控制,可以用于手动保存项目的所有版本,用于应对不同的需求:要哪个版本就给哪个版本
按官方的定义来说是Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.
即一个免费开源的分布版本控制系统,能以快速高效地处理大大小小的项目
git可以在本地管理,也可以在远端管理,即git是具有网络功能版本控制器,服务端和客户端是一体的
与git有关的代码托管网站:
2.创建仓库
以gitee为例,
注册账户后,主界面右上角的点开,有一个新建仓库选项
仓库名称必须填写,选开源或者私有,建议初始化仓库
.gitignore隐藏文件的作用下文会讲,是否添加开源许可证根据自己的需要,
点确定后会生成一个仓库
3.命令
安装git
sudo yum install git #CentOS RedHat
sudo apt install git #Ubuntu
git clone
作用:远端仓库克隆(clone)到本地,即复制一份
现网页端上传一个名称为test.txt的文件,里面写入"teststring"字符串,用于测试
这里使用https协议,点击,复制https链接
转到服务器,git clone后跟上这个链接
(有的情况下需要输入账户名密码)
test仓库已经克隆到本地了
看看test.txt的内容是正确的
除了有test.txt文件,还有一个隐藏文件.gitignore和一个隐藏目录.git
.git目录
里面存储了所有与版本控制相关的信息,包括提交历史、分支信息、配置文件等,建议不要手动修改
配置git
必须填写邮箱和账户名,和远端的要保持一致,这样有利于对代码溯源
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
git add .
作用:将代码提交到本地仓库
例如新建一个test.c放到刚才下载好的目录中,里面写入"testcode"字符串
使用以下命令将代码提交到本地仓库(具体来说是将文件的变更添加到暂存区,等待push到远端)
git add [文件名] #也可以使用git add .一次性提交当前目录及其子目录下的文件
gitee远端还没有test.c,因为还没有推送到远端
git commit
git add后,必须提交改动到本地,这样改动才会被记录下来否则git push是无效的
-m选项是添加提交信息,提交信息不可以省略
git push
作用:将本地分支的更改推送到远端仓库
首次使用需要配置信息,正确填写邮箱密码
之后成功上传到gitee远端仓库上
注意:对代码进行增删查改,也要git add . git commit -. “xxxx” ,填写代码的变化
git log
作用:显示完整的提交日志
git status
作用:主要功能包括查看未提交的修改、未跟踪的文件、分支信息及与远程仓库的同步状态
例如本地仓库再上传一个非空文件test.bin,之后使用git status查看状态
git提示test.bin没有被纳入仓库,可以使用git add .提交到本地仓库
git add .执行后,执行git status会提示test.bin等待被提交
执行git commit后:
再次执行git status:
(注:上图的origin指的是远端)
执行git push后:
已经提交到远端了:
再次执行git status,显示没有需要提交的
4.解释.gitignore隐藏文件
gitignore=git+ignore,即.gitignore中的记录的文件种类都不会被上传
查看默认配置情况下的.gitignore中的内容:
# Prerequisites
*.d
# Compiled Object files
*.slo
*.lo
*.o
*.obj
# Precompiled Headers
*.gch
*.pch
# Compiled Dynamic libraries
*.so
*.dylib
*.dll
# Fortran module files
*.mod
*.smod
# Compiled Static libraries
*.lai
*.la
*.a
*.lib
# Executables
*.exe
*.out
*.app
验证是否能忽略某些文件种类
以Executables中的*.app为例,指的是所有以app为后缀的文件都会忽略,现在本地仓库下创建一个test.app的非空文件,发现并没有上传到远端仓库,说明.gitignore起到了忽略特定种类文件的作用