视频地址:链接:http://pan.baidu.com/s/1qWFOAKk 密码:csr4
1、设置开发者的个人信息
在任何一个系统之中都会存在有多个开发者(多人协作开发),而在GIT之中,对于每一个开发者(电脑),都需要开发者自己定义自己的名字与email地址,以便进行方便的联系。
此时需要配置全局信息。
范例:配置全局用户名及email地址
git config --global user.name "yootk" git config --global user.email "mldnqa@163.com" |
设置完成之后如果成功不会任何的提示信息,而后用户可以通过如下的命令察看配置的全局信息。
范例:察看信息
git config -l |
可以发现除了之前配置的用户名和email地址之外,还存在有其它的内容。
此时这台电脑上所做出的所有修改,都会自动的将用户名、email地址发送到主程序之中。
2、创建仓库(版本库)
在仓库之中可以保存所有用户开发过程之中所编写的代码的日志纪录。对于使用过maven的用户应该很清楚respository这个单词。
如果要开发项目,那么首先必须有一个仓库(可以简单的理解为是一个磁盘上的文件夹)。
范例:创建文件夹(d:\mypro)
d: md mypro |
此时mypro文件夹是一个空的文件夹,没有任何的内容,只是一个纯粹的目录。
范例:将mypro文件夹定义为仓库
- 进入文件夹:
cd mypro |
- 初始化仓库(将此目录变为可以被GIT管理的仓库)
git init |
而且此时会提示,在mypro文件夹之中创建了一个“.git”的目录,这个目录就是仓库信息,死都不能改。
3、添加文件
现在仓库创建完成之后,下面就要进行文件的基本管理了。首先在编写之前有一个说明:所有的文件一定要使用UTF-8编码,否则有可能会出现问题(不要去使用windows的notepad.exe工具)。
既然我们都是从事于Java开发的,那么下面就利用Java源文件观察git使用。
范例:建立一个Hello.java文件
public class Hello { public static void main(String args[]) { System.out.println("Hello World !") ; } } |
此时Hello.java文件保存在了mypro目录下,而且mypro目录属于git管理的仓库。
范例:察看当前仓库的状态
git status |
在“git status”状态查询操作上可以发现有如下的几个提示信息:
· 现在的开发属于主分支:On branch master;
· 初始化仓库的提交:Initial commit;
· 未标记的文件:Untracked files
· 随后给出了一些操作的命令:(use "git add <file>..." to include in what will be committed);
· 未标记文件的列表,现在只有一个:Hello.java
范例:将文件加入到暂存库之中
git add Hello.java |
范例:继续查询状态
git status |
此时有了一个最重要的信息:
Changes to be committed: (use "git rm --cached <file>..." to unstage) new file: Hello.java |
现在的文件并没有真正的提交到主分支上(主分支就是我们真正要运行的程序的所有的代码)。
注意:所有修改的代码都会被GIT自动的监测到,所有的代码在使用commit提交之前一定要先使用add增加进来,否则不会有任何的提交。
如果现在不希望分两步进行则可以在运行以下程序时增加一个“-a”的参数,表示先add而后commit(git commit -a -m "注释")。
范例:提交文件信息
git commit -m "New Java File - Hello.java Create" |
在进行每次更新提交的时候一般都会为其增加上一些注释数据,所以使用“-m”参数来进行注释的编写。
此时这个“Hello.java”文件就被真正的提交到了主分支上,也就是意味着程序发布成功了。
范例:查询状态
git status |
此时的状态会提示:没有任何的信息需要被提交,工作目录很干净。而在git工具下用户每一次进行的提交实际上都会被日志纪录下来。
范例:察看针对于“Hello.java”文件的日志信息
git log Hello.java |
察看日志纪录的时候如果到底了(end出现)请按下字母“q”就表示可以退出了。
首先会出现一个提交的信息号“e987aaefeb219802fd783c0a7f2efcb3bbdcc44”,可以理解为是每一次提交的id号。如果有多次提交,那么这个日志信息也会越来越多。
4、修改仓库文件
程序代码已经可以成功的进行了发布,但是代码出现就是为了修改。于是现在来观察对于git工具如何去控制修改。
范例:修改Hello.java文件
public class Hello { public static void main(String args[]) { System.out.println("Hello Yootk .") ; System.out.println("www.yootk.com") ; } } |
此时发现文件增加了两行的修改。
范例:查询一下当前的仓库状态
git status |
现在GIT直接提示用户,文件没有保存到暂存区之中,而且提示有:要么你选择文件暂存,要么你直接进行文件的恢复,同时给出了已经修改的文件“Hello.java”。
范例:察看文件的前后区别
git diff Hello.java |
现在可以发现所有增加的内容都会使用“+”表示,而被删除的信息都会使用“-”表示。
范例:将修改后的代码加入到暂存区后进行提交
git commit -a -m "Update Hello.java File . Add Two Lines" |
范例:察看修改日志
git log Hello.java |
通过以上的代码演示,现在可以清楚的发现,只要是修改的操作GIT都可以进行及时的跟踪。
5、工作区与暂存区
概念解释:
· 在之前所编写的“Hello.java”文件保存在用户工作区之中;
· 当使用add命令之后,实际上就是将所修改的文件提交到了暂存区(stage)之中;
· 使用commit命令之后,才表示真正的发出了修改,而真正可以运行的程序都保存在master分支上。
5.1、工作区操作
范例:修改Hello.java
public class Hello { public static void main(String args[]) { System.out.println("www.mldn.cn") ; } } |
范例:增加一个Demo.java文件
public class Demo { public static void main(String args[]) { System.out.println("HELLO yootk") ; } } |
现在的工作区中的代码已经发生了变化。
范例:使用status跟踪
git status |
现在会提示有以下信息:
· 修改了Hello.java文件,而这个文件给出了处理方式;
· 出现了一个未标记的文件(Demo.java),询问用户是否将其加入到暂存区之中。
5.2、暂存区操作
范例:使用“git add”将代码添加到暂存区之中
git add . |
本次操作使用了一个“.”,那么就表示全部加入。修改之后再次观察状态。
范例:观察状态
git status |
5.3、提交修改
数据保存在暂存区之后,下面就要进行代码的提交,将代码提交到主分支上。
当把暂存区的代码提交到主分支上之后,会自动的清空暂存区之中的内容。
范例:提交修改代码
git commit -m "Add Demo.java File" |
那么此时再次查询状态。
那么会直接发现没有任何的文件修改的提示。
6、版本回退
每当用户进行代码提交的时候都会自动的生成一个commit id,而这个commit id就是进行代码回退的主要操作方式。
范例:查询当前修改后的日志信息
git log --pretty=oneline |
大家可以发现所有的commit id并不是顺序的1、2、3编号,而是由系统生成一个十六进制数据,这一概念就跟Session ID类似,由GIT自己控制,主要是为了防止版本号的冲突。
在master分之上会有一个HEAD指针存在,而这个指针默认情况下永远指向最后一次提交的位置。
当使用回退之后发现HEAD指针出现了改变,如果回退一步,那么之前的操作不会被删除,但是所有的代码将回归到指定位置的状态。
范例:回退一步
git reset --hard HEAD~1 |
那么如果说现在还想恢复最新的状态呢?那么就必须找到回退的commit id。
范例:找到所有的已经删除的信息commitid
git reflog |
范例:恢复最后一次提交
git reset --hard fe27af74 |
此时的代码就恢复到了新的状态,也就是说利用这些commit id就可以方便的进行代码的历史穿梭。
7、提示:文件修改问题
在有了暂存区和master主分支概念之后,就需要回避一个问题:只有保存在暂存区之中的内容才可以被真正的修改,而不是针对于文件。
范例:编写Hello.java文件
public class Hello { public static void main(String args[]) { System.out.println("yootk") ; } } |
以上是Hello.java文件的第一次修改。
范例:将修改的文件增加到暂存区之中
git add . |
此时并没有提交,而后再次修改Hello.java文件。
范例:修改Hello.java文件
public class Hello { public static void main(String args[]) { System.out.println("yootk.COM") ; } } |
但是这个时候此文件并没有使用add进行加入。
范例:进行提交(提交的时候只提交暂存区的内容)
git commit -m "change print" |
可是这个时候只是提交了第一次修改,而第二次修改并没有提交。
范例:查询状态
git status |
范例:进行对比
git diff HEAD Hello.java |
HEAD是指向最后一次提交的指针,现在的含义是将HEAD中的Hello.java文件与工作区的Hello.java文件进行对比。
总结:如果一个文件修改多次了,那么就需要执行多次的add后才可以提交,否则在add前的修改是不会被提交的。
8、撤消修改
代码修改很正常,但是经常会出现这样一种情况,代码改到一半,发现你不应该修改。
8.1、情况一:未增加(GIT ADD)&提交(GIT COMMIT)
如果在工作区之中的代码并没有增加到暂存区之中,那么如果要恢复到原始状态是很容易的。
范例:现在假设修改了Hello.java
public class Hello { public static void main(String args[]) { System.out.println("yootk.COM") ; 老子就要改代码,爱错不错! 我就这么喜欢捣乱. } } |
但是只要是文件一修改,那么git就可以立即跟踪到状态。
但是后来发现,此种修改实在是不应该进行,如果进行了,只能有一个结论:此人脑袋有问题。但是写代码的时候可能不知道上一次修改状态。
范例:恢复
git checkout -- Hello.java |
执行之后发现Hello.java文件就恢复到了一个原始的状态(上一次的提交状态)。
8.2、情况二:已增加(GIT ADD)&未提交(GIT COMMIT)
现在假设要修改的文件已经提交到了暂存区之中。
范例:将Hello.java代码提交到暂存区中
git add . |
当查询状态时:
在状态查询的时候已经给出了用户的提示,即:你可以根据HEAD指针来恢复文件。
范例:从暂存区之中退出
git reset HEAD Hello.java |
于是再次查询状态。
相当于现在已经由暂存区中保存的内容恢复到了工作区,那么既然在工作区了,就可以直接恢复原始状态。
范例:恢复原始状态
git checkout -- Hello.java |
个人建议:养成良好的开发习惯,别像演示那样这么对待代码。
9、删除文件
现在在仓库之中存在有Demo.java文件,但是假设这个文件从此之后不再使用了呢?只有一个解决方案:删除。但是在GIT里面对于删除文件这一功能严格来讲也属于一个修改操作。
范例:从磁盘上删除Demo.java文件
del Demo.java |
范例:当文件删除之后下面查询状态;
git status |
这个时候文件是从当前工作区的磁盘中删除了,同时也提示文件被删除。
范例:提交更新
git commit -a -m "Delete Demo.java File" |
但是如果说发现文件被删除错误了呢?则应该进行恢复。
范例:恢复文件
git reset --hard bc8e842247b3d78 |
如果文件被删除,则只能够利用版本控制的方式进行恢复。
10、总结
以上的所有操作都只是针对于本地仓库的改善,但是这些命令不管是本地操作还是远程操作都是可以使用的,同时一定要掌握GIT的存储结构。
相关推荐
"Pro Git中文版本"这本书不仅会讲解这些基本概念,还会深入探讨高级特性,包括Git的底层原理、性能优化和故障排查等内容,对于希望提升Git技能的开发者来说是一份宝贵的资源。通过阅读这本书,你可以掌握Git,从而更...
5. **远程仓库操作**:讲解如何在GitHub或其他托管平台创建远程仓库,使用`git remote`添加、查看和删除远程仓库,以及如何关联本地仓库和远程仓库。 6. **解决冲突**:当多个用户修改同一部分代码时,Git可能会...
本教程将深入讲解Git的基础概念、核心功能以及在GitHub上的应用。 1. Git基础 - **安装与配置**:首先,我们需要在本地安装Git,并进行基本的用户配置,包括用户名和邮箱设置。 - **工作目录与仓库**:理解Git的...
在Git的使用过程中,掌握上述知识点是基本要求,熟练使用Git可以大大提高代码管理的效率和协作的顺畅度。无论是个人开发者还是团队项目,Git都提供了一套完整的工具链来支持代码的版本控制和协作工作。
在《Pragmatic Version Control - Using Git》这本书中,作者 Travis Swicegood 对 Git 进行了深入浅出的讲解。Git 是一个分布式版本控制系统,它通过一系列的设计理念和功能特性,帮助开发者有效地管理代码库的变化...
下面将详细讲解如何利用CopSSH配置Windows上的Git服务器。 1. **安装CopSSH**:首先,你需要解压`copSSH_4.10.zip`并运行安装程序。在安装过程中,按照提示步骤进行,选择合适的安装路径,并确保在配置过程中设置一...
源码作者还可能讲解了Clickhouse的最新发展和未来规划,包括新功能的引入、性能提升和社区建设。 总的来说,"20191027 Clickhouse Meetup(Shanghai)_Git"压缩包文件包含了丰富的Clickhouse实战经验和深度技术解析,...
本手册将详细讲解如何创建一个本地Git服务器,以便团队成员可以安全地存储、管理和共享代码。 首先,我们需要理解Git的基本概念。Git是一种分布式版本控制系统,由Linux之父Linus Torvalds开发。它的主要功能是跟踪...
内容: Git基本概念 Git架构和工作原理 Git具体使用 目标: 了解Git是什么 配置和搭建Git环境 使用Git控制程序版本
- **命令行基础:** 在使用Git之前,了解基本的命令行操作是非常必要的。这包括文件的创建、删除、复制等操作。 - **安装Git:** 根据不同的操作系统(如Windows、macOS或Linux),安装过程会有所不同。通常可以通过...
在Git的使用中,首先我们需要了解Git的基本概念。Git的工作流程通常包括三个工作区:工作区(Working Directory)、暂存区(Index)和版本库(Repository)。开发者在工作区进行日常开发,修改的文件会被暂存到暂存...
无论是配置管理、版本控制的基础知识,还是分支管理、回滚操作和远程仓库的实践,本手册都力求详细讲解,帮助读者有效掌握Git的使用。通过遵循文档中的规范和建议,可以提高代码版本控制的质量,降低安全风险,并...
《ProGit》是一本深入解析Git的权威指南,它详细阐述了Git的使用方法和内在原理,对于开发者来说,无论是初学者还是资深用户,都是一本不可多得的参考资料。Git是一款分布式版本控制系统,它的出现彻底改变了软件...
- 删除文件:首先使用`rm`命令删除文件,然后使用`git commit`将这一变更记录到版本库中。 ```bash $ rm readme.txt $ git add . $ git commit -m "Remove readme.txt" ``` 4. 版本回退:如果需要回退到之前某个...
本文是一个专门介绍Git的PPT,可以用来给新手讲解关于Git的知识。从Git简介、Git安装、创建Git版本库、Git版本库中的版本控制与搭建Git服务器五个方面介绍Git。
本教程将详细讲解Git的安装和使用过程。 ### 一、Git安装 在Windows上,你可以通过以下步骤安装Git: 1. 访问Git官方网站(https://git-scm.com/download/win),下载最新版本的Git安装程序。 2. 运行安装程序,...
git入门培训ppt,git使用培训,git发展,git分支的使用,git中的基本使用说明和以及基本命令, git入门培训ppt,git使用培训,git发展,git分支的使用,git中的基本使用说明和以及基本命令
书中会讲解如何在这些环境中配置和使用Git,包括查看版本历史、解决冲突以及进行日常的版本控制操作。 总的来说,《Pro Git》是一本深入浅出的Git教程,适合初学者和有经验的开发者阅读。它不仅解释了Git的基本原理...
Git 概述和常用命令解说 Git 是一个分布式版本控制系统,允许开发者跟踪代码修改历史记录。Git 库由三部分组成:工作...本文档主要讲解了 Git 的基本概念和常用命令,旨在帮助读者快速了解 Git 的使用方法和基本原理。
4. **Git的基本命令**:讲解如何安装Git,以及常用命令的使用,如`git init`、`git clone`、`git add`、`git commit`、`git push`等,让学习者能够动手实践。 5. **版本历史查看**:演示如何使用`git log`、`git ...