有关Git本地仓库的操作(笔记一)

206 阅读8分钟
  • 开篇我引导一下,因为我之前就被这几个词给搞混淆了,希望初学者们不会再有这种事儿出现
    • 本地仓库:也就是自己的电脑上的一些操作,没有链接到网上,磁盘上丢失,彻底丢失(本地电脑)
    • 远程仓库:也就是将自己些的一些东西,放到了网上,如GitHub,Gitee等,电脑丢失后可以通过网络可找回(远程电脑)
    • Git和Github:Git是一个版本管理管理工具,Github主要是用来存放写的代码的以及程序员之间相互交流和学习的网站,一个是工具,一个是网站,不要混淆。

Git工具安装完后相关的配置

  • 当安装完 Git 应该做的第一件事就是设置你的用户名称与邮件地址。 这样做很重要,因为每一个 Git 的提交都会使用这些信息,并且它会写入到你的每一次提交中。
git config user.name --global "你的姓名"		//配置邮箱
git config user.email --global "你的邮箱"	        //配置密码
git config --list		//该命令可以查看你自己设置好的姓名和邮箱等等配置(打印所有配置)
git config user.name	        //打印指定config

相关操作命令

1.git的入门级操作

  • git init
    • 初始化创建仓库,会创建一个隐藏的.git文件,所有的操作记录都会存入其中
  • git status
    • 查看当前仓库所在的目录的文件状态
      • Untracked 未追踪的
      • Committed 可被提交的
      • modified 已修改的(已修改的文件在提交前,需要再git add一次)
  • git add filename
    • 使某个文件加入追踪,将文件加入暂存区域等待提交
  • git commit(会进入vim编辑模式,然后输入相关本次提交的信息)
    • 提交(并且附带:对此次操作的描述信息)
  • git log
    • 查看提交记录(会显示相关提交人,和相关提交日志)

2.git入门级操作扩展

git add .			        //将多个文件加入追踪,将文件加入暂存区域等待提交
git commit -m '描述'			//在引号中写此次操作的描述信息,就不用进入vim模式
git commit -a -m '描述' 		//这样写可以省略git add .操作(但是不能对没有进行追踪的文件进行操作)

3.删除文件

  • git rm filename
    • 这句命令是将git区域中记录的文件,并不保留在工作目录中
  • git rm -f filename
    • 这句命令用于强制删除,当文件修改后没有进行提交,一般不允许删除,该命令可以进行强制删除操作
  • git rm --cache filename
    • 该命令用于删除Git仓库中的文件记录,但是不删除工作目录中的文件(磁盘里面的文件)

4.移动文件(重命名)

  • git mv [file_from] [file_to] (其实这相当于是对文件进行了一次重命名的操作,如果操作前和操作后目录不变,文件名更改则为重命名,具体可看下方例子)

    • 该代码的意思是将文件进行移动,从初始位置移动到指定位置,并可对文件名进行更改,文件内内容不变

    • 第一个file_from是文件的当前位置(以及当前文件名),第二个file_to是文件所需要移动到的指定位置(以及移动后的文件名)

    • 格式:path/filename 文件位置加上文件名字,默认是终端当前所在文件夹

      • 例子:

        git mv a.txt b.txt		//该段代码的意思就是将a.txt文件重命名为b.txt(下面有相关该代码的具体解释)
        git mv a.txt file/a.txt         //该段代码的意思就是将a.txt文件放入文件夹file当中,名称仍为a.txt
        git mv a.txt file/b.txt		//该段代码的意思就是将a.txt文件放入文件夹file当中,名称改为b.txt
        
  • git mv a.txt b.txt

    • 它的工作原理是:将当前工作目录中将(a.txt)文件删除→在指定目录下生成一个(b.txt)文件并保留a.txt的全部内容(我们文件管理系统所拥有的重命名能也是这个原理)

    • 相当于执行了以下三条命令

      mv a.txt b.txt			//将目标文件移动到指定位置的代码
      git rm  a.txt			//将目标文件原来的位置的文件删除(a.txt)
      git add b.txt			//再将指定文件生成的文件添加追踪(b.txt)
      

5. 查看命令

  • git status

    • 显示未追踪文件,已追踪文件,已修改文件,相应的比较全面的情况
  • git status -s

    • 用相应的short符号来表示每一个文件当前所处的状态:

      ??				//文件名前面跟的是??表示文件未追踪文件
      A 				//文件名前面有一个大写字母A,表示文件为添加到暂存区的文件
       M				//右边的大写M,表示被修改但未放入暂存区的文件
      MM				//两个大写的M,表示修改后放入暂存区后,但是又被修改的文件
      M 				//左边大写的M,表示被修改后放入暂存区了的文件
      D				//左边大写的D,表示该文件被删除了(用git rm filename解决后提交)
      R				//左边大写的R,表示文件重命名
      
  • git diff

    • 查看当前文件的修改(主要看工作区文件),也就是未添加到工作区域的文件,与之前的文件的差异

    • 输入该条命令后得到如下图:

      • --- a/a.txt:表示之前添加到暂存区中的文件(git add a.txt)
      • +++ b/b.txt三个加号后面修改文件后没有添加到暂存区的文件,后面显示出对应的修改
      • 蓝色字体代表的是我们所打印出来的行号
        • -1:代表的是已添加到暂存区的a.txt的行为1行
        • +1,2:代表的是未添加到暂存区的a.txt的行为1到2行,具体显示,针对的是文件所对应的行数
      • 红色部分代表的是添加到暂存区的a.txt文件中的内容
      • 绿色部分是修改后没有添加到暂存区的已修改的内容,可以看出他们的内容是全部进行替换的
  • git diff --staged

    • 显示与git diff类似,但是主要对比的是本次暂存区与上次提交后的文件之间的差异
  • git log

    • 查看日志的操作,这种查看方式会显示具体的ID(也就是校验和,也称之为ssha-1),具体作者,提交时间,以及提交时输入的描述/信息

    • 打印比较多的时候,会进入日志模式,不能继续敲击命令,此时按q即可退出

    • 还有许多有关命令,我简单列举一些:

      git log -p			//详细信息的打印,该命令会将具体的所有信息全部显示出来,包括diff所包含的信息
      git log -[Number]		//[Number]是自己输入的数字,用来控制显示日志的条数
      git log --stat			//该命令打印简陋的统计信息出来给我们看(很少使用)
      git log --pretty=online         //该命令用于显示ID和提交描述,一行显示一条提交
      git log --pretty=format:"%H %h"		//打印完整哈希值和简短哈希值
      
  • 关于查看命令还有非常多,这里无法给大家每一个都做解释,挑选了几个我常用的,大家可以通过git help loggit help status命令获取相关帮助,那里的解释非常全面。(小声嘀咕:那里面好多东西我看不懂)

补充知识(Git 相关知识)

相关底层原因

  • 在本地的Git中,已追踪的文件有以下三种状态,未追踪(Untracked)的文件Git不会进行管理,也就没有状态可言
    • 已修改:已经被追踪的文件发生更改后的状态(已提交过的文件发生改变后同样是进入已修改状态)
    • 已暂存:代表已经通过git add filename操作后的文件,等待被提交
    • 已提交:代表文件已经提交并且已备注,后面可以进行相应的回退操作。

  • 在git文件中有三个工作区域(前提:文件已追踪)
    • 工作目录:也就是当前磁盘的目录所呈现的内容,当前已修改的文件会在此处存放,并且显示当前版本的全部文件在磁盘
    • 暂存区域:文件修改后,通过git add filename操作后,进入的下一个区域,这个区域,等待提交(git commit -m ‘相关描述’)
    • git仓库: 这里存放的是已经提交的文件,将暂存区域中的文件保存到仓库中,后续可以进行版本回退等操作

vim编辑模式相关的简单操作

i	//敲击小写i进入vim的编辑模式,然后进行编辑(输入自己需要输入的内容)
ZZ	//两个大写的Z可以保存并退出vim编辑模式

笔记二的链接:有关Git本地仓库的操作(笔记二)