Git基础(一)
Last updated
Was this helpful?
Last updated
Was this helpful?
git是版本管理系统(Version control systems ,VCS),用于对项目的版本进行跟踪管理。在git出现之前,拥有很多VCS,这些VCS的工作原理是对于项目中的每一个文件,保存他们随时间积累的改动。
git不同于其他版本管理工具,它每次改动都会保存所有项目文件的快照,如果某些文件在这次改动中没有变化,那么git只保存一个指向前一版本的链接。
git会根据项目目录结构以及文件内容,通过SHA-1
算法计算生成校验和,所以只要你对项目做了改动,git就能察觉。
git的工作区域分为工作区、暂存区和已提交区,当我们在项目中新增、修改文件时,这些改动都在工作区中。如果我们修改完成,使用git add
命令,就可以讲这些改动由工作区移到暂存区。当文件处于暂存区时,我们就可以使用git commit
命令将文件由暂存区挪到已提交区。当文件处于已提交区域时,所有的改动都会被永久保存在本地数据库中。如果你将项目根目录的.git
文件夹删除,就会永久失去所有的版本记录。
当我们初次使用git,用到的最简单且必要的配置就是为git配置一个全局可用的提交者(还是作者?提交者和作者的区别?)的名字和其邮箱,其中--global
参数表示本次配置对于本机所有的git仓库都有用,除非你在项目的局部配置文件里面进行了同样的配置,局部的配置会覆盖全局的配置。
此外,还需要配置git命令使用的编辑器,下面的命令就是将git默认的编辑器改为vim
。
当使用git commit
命令时,如果不使用-m
参数加上提交信息,就会打开配置的editor让你进行下一步的操作。 还有一个可选的配置:
该配置会使git status
的结果中的中文正常显示。
使用git config --list
就可以展示出当前的所有配置。
在项目根目录使用git init
就可以将项目生成为git项目,该操作会在项目根目录生成一个.git
目录,他就用于记录版本的变化,并且我们可以在其中进行项目特有的配置,例如修改该仓库特有的提交者姓名和邮箱。
当项目被初始化为git仓库后,只要你在当前目录中新增文件时,git就会将该文件列为未被跟踪状态。使用git status
可以看到当前仓库所有文件的状态。
可以看到,当前有一些文件和文件夹处于Untracked files
中,这些文件处于未跟踪状态,对其进行修改git也不能知道改动的内容。此时,就需要使用git add
命令,将文件添加到暂存区中。
在上面的命令结束后,再次运行git status
来查看当前工作区的状态。
可以看到,刚刚添加到暂存区的文件显示在Changes to be committed
中,git
还提示我们,如果我们想将该文件从暂存区移除,可以使用git restore --staged <file_name>
命令。
当我们再次对该文件进行修改后,再次使用git status
查看状态。
可以看到,现在又多出了一列Changes not staged for commit
,这一列的文件中表示该文件已经被git所跟踪但是还有修改没用添加到暂存区。再次使用git add
将修改添加到暂存区。
当所有的修改都添加到暂存区后,就可以使用git commit
命令将这些修改挪到已提交区。
其中-m
表示添加提交信息,如果不加该参数,git会打开你配置的默认编辑器,然后你在那里修改提交信息。
当该操作完成后,所有变动就会被添加到本地git仓库,你可以使用git log
来查看所有提交记录。
该命令会显示项目的所有提交历史,commit
后面跟的是commit id
,用于标记当前版本(SHA-1生成的校验和)。如果你后悔了,可以使用git reset
命令将本地的内容返回到对应commit id
的版本。
在--hard
表示将所有内容返回到f99fec9901064a78c7290e6bbd95de9660b17225
版本,如果使用--soft
,那么f99fec9901064a78c7290e6bbd95de9660b17225
版本到当前版本的所有改动将会保留在暂存区。
上述就是git的基本工作流程,下图也很好的概括了这些常用操作。