Git
命令
基本的Linux命令学习
-
cd:改变目录
-
cd…:回退到上一个目录,直接cd进入默认目录
-
pwd:显示当前所在的目录路径
-
ls(ll):都是列出当前目录中的所有文件,只不过ll列出的内容更为详细
-
touch:新建一个文件如touch index.js就会在当前目录下新建一个index.js文件
-
rm:删除一个文件,rm index.js就会把index.js文件删除
-
mkdir:新建一个目录,就是新建一个文件夹
-
rm -r:删除一个文件夹,rm -r src删除src目录
rm -rf/ 切勿在Linux中尝试!会删除电脑中的全部文件
-
mv:移动文件,
查看配置 git config -l
查看不同级别的配置文件:
#查看系统config
git config --system --list
#查看当前用户(global)配置
git config --global --list
Git相关的配置文件:
-
Git\etc\gitconfig:Git安装目录下的gitconfig --system系统级
-
C:\Users\JeremyXu\ .gitconfig 只适用于当前登录用户的配置 --global 全局
设置用户名与邮箱(用户标识,必要)
Git基本理论:
Git本地有三个工作区域,工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)。如果在加上远程的git仓库(Remote Directory)就可以分为四个工作区域。文件在这四个区域之间的转换关系如下:
- 工作区(Workspace):平时存放项目代码的地方
- 暂存区(Index/Stage):用于临时存放你的改动,事实上他只是一个文件,保存即将提交到文件列表信息
- 仓库区(Repository):存放数据的位置,这里面含有你提交的所有版本的数据。其中HEAD指向最新放入仓库的版本
- 远程仓库(Remote):托管代码的服务器,可以简单地认为它是项目组中的一台电脑,用于远程数据交换
工作流程
git的工作流程:
-
在工作目录中添加、修改文件
-
将需要进行版本管理的文件放入暂存区域:
git add
-
将暂存区域的文件提交到git仓库:
git commit
因此,git管理的文件存在三种状态:已修改(modified)、已暂存(staged)、已提交(committed)
项目搭建
本地仓库搭建
创建本地仓库的方法有两种:一种是创建新的仓库,另外一种是克隆远程仓库
- 创建新的仓库,需要在用Git管理的项目的根目录执行:
# 在当前目录新建一个Git代码库
$ git init
执行成功后可以看到目录中多出了一个.git目录(注意要打开查看隐藏文件),关于版本等的所有信息都在这个目录中
- 克隆远程仓库,将远程服务器上的仓库完全镜像一份至本地
# 克隆一个项目和它的整个代码历史(版本信息)
$ git clone url #url为克隆地址
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 status filename
# 查看所有文件状态
git status
#添加所有文件到暂存区
git add .
#提交暂存区中的内容到本地仓库 -m 提交信息
git commit -m "注释"
忽略文件
主要用于排除掉一些文件纳入版本控制中,比如数据库文件,临时文件,设计文件等
在主目录下建立“.gitgnore
”文件,此文件有以下规则:
- 忽略文件中的空行或并号(#)开始的行将会被忽略
- 可以使用Linux通配符,例如:星号(*)代表多个字符,问号(?)代表一个字符,方括号([abc])代表可选字符范围,大括号({string1,string2…})代表可选的字符串等
- 如果名称的最前面有一个感叹号(!),表示例外规则,将不被忽略
- 如果名称的最前面是一个路径分隔符(/),表示要忽略的文件在此目录下,而子目录中的文件不忽略
- 如果名称的最后面是一个路径分隔符(/),表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)
#为注释
.txt #忽略所有 .txt结尾的文件
!lib.txt #但lib.txt除外
/temp #仅忽略项目根目录下的TODO文件,不包括其他目录temp
build/ #忽略build/目录下的所有文件
doc/.txt #会忽略doc/notes.txt但不包括doc/server/arch.txt
使用码云
-
注册并登录码云,完善个人信息
-
设置本机绑定SSH公钥,实现免密码登录
在C:\Users\JeremyXum、目录下
输入$ ssh-keygen -t rsak
-
将公钥信息
public key
添加到码云账户中即可 -
使用码云创建一个自己的仓库