配置GIT全局属性
- 将使用命令行的方式进行GIT的处理操作
- 全世界所有的开发者都可以进行项目的维护,那么就需要明确知道每一个开发者信息,所以这个时候往往每个开发者都有一个自己的ID,邮箱地址
- 设置开发者的用户名
git config --global user.name '用户名'
- 设置开发者的邮箱信息
git config --global user.email '邮箱地址'
- 取得所有的配置全局信息
git config --list
git config -l
创建git本地仓库
- 如果要想进行点的管理,那么一定需要有仓库,但是对于仓库的配置流程也是分为两种情况
- 可以单独建立一个文件夹,将这个文件夹设置为仓库
md 目录路径
cd 目录路径
- 对此目录进行初始化的配置操作
- 第一种:创建一个包含配置信息的仓库目录,相当于在这个目录中自动建立一个.git目录
git init
-
gitHouse目录下的内容
-
gitHouse/.git/目录的内容
- 第二种:直接将当前的目录初始化为git仓库,(所有的配置文件保存在此目录中)
git init --bare
- 此时E:\DevRepository\gitHouse目录下的内容
- 以后进行网络发布的时候,会采用以上的方式完成.
- 如果是使用本地进行发布代码,那么使用第一种方式即可,如果是使用服务器端发布代码,那么要使用第二种方试
仓库的基本操作
- 使用本地的方式提交代码
- 在进行操作的时候将直接在本地的目录中,并且在这个目录中存在有".git"目录.这个时候所有的在"E:\DevRepository\gitHouse"目录下创建或者更新的文件操作都会被git自动跟踪到
- 在:E:\DevRepository\gitHouse"创建一个Hello.java
- 在这时候相当于在跟踪的文件中出现了新的文件了,那么按照道理来说,git肯定可以跟踪到文件夹的变更
- 查看当前文件目录状态
git status
-
现在只是明确的告诉用户在当前的目录出现一个新的文件,这个文件不属于git仓库中的内容,需要用户将其加入到仓库后才可以进行跟踪
-
将Hello.java文件追加到GIT仓库进行管理
git add Hello.java
- 这个时候实际上指的待入库状态,那么随后可以继续对现在的工作目录状态进行查询
git status
- 这个时候的文件本身还没有完全入库,所以要想进行入库处理,则必须对其进行提交
- 提交更新命令
git commit -m "注释内容"
- 一次增加多个文件入库
- 事实上一个阶段性的开发,都要进行入库的操作,这就表示会又一大波的文件采用同样的入库操作.
- 现在建立两个文件:Dept.java,Emp.java
- 那么这个时后如果要使用了状态的查询\
git status
- 传统方式只能够一个一个完成,现在使用批量完成
git add .
- 命令后面有一个"."小数点,小数点表示所有新建的文件,和所有被修改的文件
- 进行提交处理
git commit -m "注释内容"
- 查看所有已进行监控的文件
git ls-files
修改仓库文件
- 对于 仓库中保存的文件,实际上属于跟踪信息,如果此时对指定目录下文件进行了修改处理,那么理论上是可以进行跟踪到的.
- 修改Hello.java文件
public class Hello{
public static void main(String[] args){
for(int x =3;x<=100;x++){
int temp = x;
booelan flag = true;
for(inx j=1;j<temp;j++){
if(temp%j==0){
flag=false;
break;
}
}
if(flag){
System.out.println(x);
}
}
}
}
- 这个时候相当于仓库中的文件于跟踪目录下的文件的内容不同步,所以查看此时工作的状态
git status
-
这个时候实际上发现了On branch master被修改的文件,于是有两个解决方案
- 将新修改的文件提交到"暂存区",随后等待代码提交
- 如果代码修改出现了问题,建议使用"checkout"将已经存在仓库的文件进行恢复
-
查看文件的区别
git diff Hello.java
-
在进行代码区别比较的时候会出现两种颜色
- 如果是追加代码使用绿色表示
- 如果是删除代码使用红色表示
-
如果现在不想修改,则可以通过原始文件检出代码
git checkout 文件名称
- Hello.java中的内容
- 如果要进行修改,则进行提交处理操作
git add .
git commot -m "注释内容"
- 利用此方式可以比较前后的修改差别,同时实现更新于恢复的操作
仓库概念深入
可以发现在之前的处理操作里面,其基本的流程:
- 在工作的目录下创建或是修改文件,但是这个文件不会提交到仓库中
- 使用"git add"可以讲更新后的内容进行提交,但是这个时候的提交是可以进行撤销的
- 最终真正的代码回报存在真正的仓库里面
-
当在检测目录中建立或修改一个文件的时候,实际上改变的是工作区的内容,既然是工作区的数据就可以被GIT所进行监听
-
如果要想真正将其进行修改控制,则需要使用"git add ."将文件添加到暂存区中
-
但是这个时候的暂存区严格来讲并不会作出任何的仓库的更新处理,因为此时如果有问题,还可以进行删除
-
将修改提交给版本库(Master,主分支)
-
既然在工作区和版本库中存在有一个暂存区的概念,那么如果说现在一个修改的内容已经提交给了暂存区,同时又针对于工作区进行修改,那么这个时候最后的修改会被提交到工作区中.
-
修改Hello.java文件
public class Hello{
public static void main(String[] args){
for(int x =3;x<=100;x++){
int temp = x;
booelan flag = true;
for(inx j=1;j<temp;j++){
if(temp%j==0){
flag=false;
break;
}
}
if(flag){
System.out.println(x);
System.out.println(flag);
}
}
}
}
- 如果此时查询状态
git status
- 将现在的工作取得内容提交到暂存区中
git add .
- 修改工作区中的Hello.java文件
public class Hello{
public static void main(String[] args){
for(int x =3;x<=100;x++){
int temp = x;
booelan flag = true;
for(inx j=1;j<temp;j++){
if(temp%j==0){
flag=false;
break;
}
}
}
}
}
- 发现此时在暂存区中提交的代码和工作去中的内容不同了
- 查看此时的状态
git status
- 发现此时的Hello.java文件有两个状态,
- 有一个Hello.java修改的内容在暂存区中还未提交
- Hello.java文件被修改,还未添加到暂存区中
- 将暂存区提交到版本库
git commot -m "注释内容"
- 提交完成之后查看此时的文件区别
- 这个时候只有暂存区的内容会提交到版本库之中, 而工作区和版本库的代码没有任何联系
版本穿越
-
git中最大的操作特点在于其可以针对不同的代码进行回退于前进的动态的处理切换,而之所以git存在有强大的功能,源自于他自己的提交的日志的概念,也就是说当用户使用"git commit"进行修改提交的时候,就会有一个Commit ID数据
-
查看Commit ID
git log
- 但是以上所列出的信息过于完整了,很多时候并不需要关注这么详细的内容
- 采用简化列出
git log --pretty=oneline
- 在默认情况下当前的代码状态一定是属于最上面的点,所以为了标注这个当前提交点状态,在GIT提供有一个HEAD指针,他负责指向的所使用的提交点
-
所以本质上来讲如果要进行版本的回退处理,那么所需要控制的就是HEAD的指针
-
回退到上一个保存点
git reset --hard HEAD~1
以上的操作只能够回退到上一个,如果此时有500个提交点,需要回退到指定的提交点上,
- 查看所有的提交点
git reflog
- 于是根据这些提交点可以来控制HEAD当前的指向
- 回复到指定的提交点
git reset --hard 提交点
- 此时的工作区文件内容
- Hello.java文件中的内容
- 所有的操作实际上都被git所监控着,你进行文件的删除,创建和修改,都会被记录
撤销修改
-
由于GIT针对于所有的工作目录下的文件信息进行监控处理,所以如果在工作目录下的内容需要进行变更撤销,那么也需要考虑到两种情况
- 情况1:在工作区中发生了改变,但此时没有提交到暂存区
- 情况2:将修改的内容一天假道暂存区,但是还未提交到版本库中.
-
修改一个工作区的文件
- 修改了一个文件实际上会对这个文件进行跟踪,使用 git status查看
-使用 git checkout 命令撤销对工作区的修改
git checkout Hello.java
- 如果此时修改了文件,并且该文件提交到了暂存区之中
- 如果发现不想进行修改,则可以检出已有的内容
- 此时文件被提交到了暂存区,如果此时想要取消修改,要现将文件从暂存区中取消
- 使用git reset HEAD命令将暂存区中的文件取消
git reset HEAD Hello.java
- 然后在恢复具体的文件内容
git checkout 文件名称
- 如果你的代码更新已经提交到了版本库中,那么只能够利用版本穿越的方式完成了.
文件删除
- 在工作区中的文件如果确定不再需要使用,也可以删除操作
- 删除工作区中的文件
del Hello.java
- 查看当前的状态
git status
- 这个时候的删除的文件实际上只是工作区中的删除操作,版本库里面依然存在有此文件内容,此时删除的文件会停留在暂存区中,需要对暂存区中的操作进行提交处理,才可以真正删除
git add .
git commit -m ""
- 如果此时发现代码删除错了,那么可以利用版本穿越来进行处理.
git reset --hard 提交id
- 如果此时要删除的文件已经在暂存区里面了,
del Hello.java
git add .
- 现将该文件从暂存区中取消
git reset HEAD Hello.java
- 在撤销修改
git checkout Hello.java