在git中文件有三种状态:已修改(modified)、已暂存(staged)、已提交(committed)
在工作区中修改文件,修改后文件的状态为已修改状态,随后对已修改的文件进行git暂存操作,将文件存入暂存区,最后再将已暂存的文件进行git提交操作,将文件存入版本库,这所有的操作都是在本人电脑上操作,不涉及远程,即使电脑没有联网也能完成这些操作。
首先在桌面上创建出一个文件夹并进入该文件夹:
cd Desktop
mkdir mygit
cd mygit
git init
通过linux命令
ls -al // 查看该目录下的所有文件,包括隐藏文件,如果安装了oh my zsh,直接使用l即可
在控制台使用如下命令创建一个test.txt文件并写入内容:
echo "hello world" > test.txt
cat test.txt // 查看创建的文件的内容
如果使用了oh my zsh,命令行会出现一个黄色的小叉,说明工作区中有新的修改没有提交,当然git也提供了命令来查看当前工作区的状态:
git status
输入命令后给出的提示:当前处于master分支,现在是初始提交,当前工作区有未追踪的文件test.txt,可以使用git add 命令来将文件加入版本控制系统。
根据上面的提示,使用命令将已修改的文件加入暂存区:
git add test.txt
给命令没有任何提示,linux的宗旨是“没有结果就是最好的结果”,当执行命令后没有任何提示时,说明命令执行成功。
我们再输入git status命令看看:
可以看到前两行是没有区别的,后面的提示是:有修改需要提交,新的文件test.txt,可以使用git rm --cache将文件从暂存区移除,可以使用这个命令试试:
git rm --cache test.txt
可以看到工作区的状态变为了使用git add 命令之前的状态,即该文件以及从暂存区中删除了。
现在重新使用git add命令将文件加入暂存区。
git commit
该命令会将暂存区中所有的修改进行提交,输入命令后会进入一个vi的界面,让你输入提交说明:
按下i键进入编辑模式,输入相应的内容,按下ESC键进入命令模式,输入 :wq 保存并退出即可完成提交。如果什么修改都不做,直接退出,提交会失败,git强制每次提交都要有说明,下面不写任何内容直接退出:
每次打开vi比较麻烦,可以这样快速提交:
如果你是按照git之后没做任何设置,git 会提醒你设置user.name和user.email,本次提交的用户名和邮箱会根据你登录的用户名和主机名自动生成。git提示你使用如下两个命令设置用户名和邮箱:
git config --global user.name "Your name"
git config --global user.email "[email protected]"
可以查看提交记录:
git log
在commit后面有一个id,实际上是使用sha1计算出来的,几乎不会重复。下面会显示提交信息。按 q 键退出日志。
用户名和密码有三个地方可以配置,可以使用命令查看一下:
git config
总共有三个地方可以修改,对应的git命令分别是system、global、local
1. /etc/gitconfig(几乎不会使用) system级别,整个计算机都会使用,如果电脑有多个用户,每个用户都会使用这个配置
2. ~/.gitconfig global基本,对于特定的用户起作用,在Windows中在$HOME目录下,及在用户名目录下
3. 位于版本库的.git/config中,local级别,对于特定的项目,使用不同的用户名和邮箱
当三个都配置时,作用范围越小优先级越高,即
local > global > system
下面演示一下global和local。
git config --global user.name '张三'
git config --global user.email '张三@email.com'
然后查看:
git config user.name
git config user.email
用这个配置提交一次看看log
使用git log查看提交记录:
再试试local
git config --local user.name '李四'
git config --local user.email '李四@email.com'
可以看到,生效的是local的配置,可以和上面一样提交一次提交日志,生效的是local的配置。
如果要取消配置,使用如下命令,比如取消local的配置
git config --local --unset user.name
git config --local --unset user.email