Git工作目录
git有三个工作区域,工作目录(Working Directory,平时存放项目代码吗的地方)、暂存区(Stage/index,用于存放你的临时改动,事实上他只是一个文件,保存即将提交到文件列表信息)、资源库(Repository/Git Directory,安全存放数据的位置,这里有你提交到所有版本的数据,其中head指向最新放入仓库的版本)。加上远程的git仓库(Remote Directory,托管代码的服务器,可以简单认为是你项目组中的一台电脑用于远程数据交换)就可以分为四个工作区域。文件在四个工作区域的转换关系如下:(左右两边的是命令)
Git工作流程
- 在工作目录中添加、修改文件
- 将需要进行版本管理的文件放入暂存区域(git add.)
- 将暂存区域的文件提交到git仓库(git commit)
所以Git管理的文件有四种状态:已修改(modified)、已暂存(staged)、已提交(committed)
Git项目搭建
工作目录一般就是你希望git帮助你管理的文件夹,也可以是你项目的目录,也可以是一个空的文件夹,建议不要有中文。日常使用只需要这六个命令:
本地仓库搭建
- 创建全新的仓库,需要用git管理的项目的根目录执行
# 在当前目录新建一个Git代码库 $ git init
执行后可以看到仅仅是在项目目录多出一个.git目录,关于版本等的所有信息都在这个目录里面
克隆远程仓库
- 克隆远程目录,是将远程服务器上的仓库完全镜像一份到本地
# 克隆一个项目和他的整个代码历史(版本信息)$ git clone [url]
- 可以去gitee或者github上克隆一个测试一下
Git文件操作
Git管理的文件有四种状态:
- Untracked:未跟踪此文件在文件夹中,但并没有加入到git库,不参与版本控制.通过git add状态变为Staged
- Unmodify::文件已经入库,未修改.即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处,如果它被修改,而变为Modified如果使用git rm移出版本库,则成为Untracked文件
- Modified:文件已修改仅仅是修改并没有进行其他的操作.这个文件也有两个去处,通过git add可进入暂存staged 状态使用git checkout 则丢弃修改过返回到unmodify状态,这个git checkout即从库中取出文件,覆盖当前修改!
- Staged: 暂存状态.执行git commit则将修改同步到库中,这时库中的文件和本地文件又变为一致,文件为Unmodify 状态.执行git reset HEAD filename取消暂存,文件状态为Modified
查看文件状态
$ git init
创建仓库
$ git status
查询文件状态
$ git add .
添加到暂存区
$ git commit -m "消息内容"
提交暂存区的内容到本地仓库 -m 提交信息
忽略文件
有些时候我们不想把某些文件纳入版本控制中,比如数据库文件、临时文件、设计文件等
在主目录下建立".gitignDre’文件,此文件有如下规则:
- 忽略文件中的空行或以并号(# )开始的行将会被忽略。
- 可以使用Linux通配符。例如:星号(*)代表任意多个字符,问号( ? )代表一个字符 ,方括号( [abc] )代表可选字符范围,大括号( {String1,String2,…})代表可选的字符串等。
- 如果名称的最前面有一个感叹号( !) ,表示例外规则,将不被忽略。
- 如果名称的最前面是一个路径分隔符( / ) , 表示要忽略的文件在此目录下,而子目录中的文件不忽略。
- 如果名称的最后面是一个路径分隔符( / ) . 表示要忽略的是此目录下该名称的子目录.而非文件(默认文件或目录都忽略)。
#为注释
*.txt #并忽略所有. txt结尾的文件
!lib. txt #但lib. txt除外
/temp #仅忽略项目根目录下的TODO文件,不包括其它目录temp
bui1d/ #并忽略bui1d/目录下的所有文件
doc/*. txt #会忽略doc/notes.txt 但不包括doc/server/arch. txt
使用码云配置公钥
- github因为一些原因速度会比较慢,推荐使用国内的gitee 网址https://gitee.com/
- 设置本机绑定SSH公钥,实现免密码登录
# 进入C:\user\a\.ssh 目录
# 生成公钥
ssh -keygen
官方推荐的加密
ssh -keygen -t rsa
在.ssh目录下输入命令,一路enter就好了(也可以输入自己的信息)
-
将公钥信息public key添加到自己的账户上
将这个文件里的内容复制粘贴到gitee的添加公钥的公钥里
-
创建一个自己的仓库
自由选择是否公开以及模板类型
开源许可证的说明,自己选