初始化项目
在版本控制的初始状态下,需要对进行版本控制的文件夹进行初始化,例如对当前工作目录的/git_show文件夹进行版本控制
#intput
cd ~/git_tech
git init
#output
Initialized empty Git repository in /Users/wang/git_tech/.git/
添加需要进行版本控制的文件
在git的使用中,只有添加到版本控制在文件才会被git管理.如此处我们创建两个文件一个添加到git一个的缓存区一个不添加到git的缓存区
#input
#使用vim创建文件
cd ~/git_tech
vim git_add.txt
vim git_unadd.txt
#将其中一个添加到版本git的缓存区
git add git_add.txt
git status
#output
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached ..." to unstage)
new file: git_add.txt
Untracked files:
(use "git add ..." to include in what will be committed)
git_unadd.txt
上述输出显示一个文件已经被git记录(slash),另外一个则没有被git记录(unstash).真实的bash环境下, slash 的文件会显示为绿色,unslash的文件会显示为红色
对git的版本的提交
git工具在对其管理的工具进行添加缓存(slash)后,还需要对缓存中的内容进行提交(commit)以生成一个hash值. 来代表当前版本. 说的有点啰嗦了. 简单点就是说,提交的代码才会进行git仓库,不提交的代码不会进行仓库. git 就不能对它进行进一步的操作. 对应用的命令行如下
#input
git commit -m '这是一个次代码提交'
#out
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached ..." to unstage)
new file: git_add.txt
Untracked files:
(use "git add ..." to include in what will be committed)
git_unadd.txt
localhost:git_tech wang$ git commit -m '这是一个次代码提交'
[master (root-commit) bdf45b1] 这是一个次代码提交
1 file changed, 1 insertion(+)
create mode 100644 git_add.txt
可以看到提交后的输出日志上,会显示当前版本库的说明.就是我们上面''中的内容. 和当前版本的hash值bdf45b1这是就是我们后续操作这次提交的依据.
操作git 的历史版本
在实际应用中,经常会有这样的操作.我们写了100行代码.然后对这个100行代码修改了10次.每次都将修改内容提交(cmmit)到了git版本库中.这样就对这个有100代码的文件形成了10次修改记录. 我们可以通过git来查看这些记录.
#input
git log --oneline
#output
b24977c (HEAD -> reinforment_learning) Wang commit new file at new branch
aa63e6e (master) Wang del file
70cdd8c Second File
c22ef43 Wang seveth commit
8cb694d Wang sixth commit
d3eb3e0 Wang sixth commit
2d6db6c Wang fifth commit
6c3a13c Wang forth commit to git_add.txt
92db9e7 Wang second commit to git_add.txt
08564f0 Seond commit messages
#input
git reflog #这种会常用一些
查看或修改历史版本
有的时候,我们对那100行代码的文件的第5次修改感兴趣.但又想不起来第5次改了什么. 这时git可以帮助你回退到那个版本上去(前提是那次修改后,你提交了).
#input
git reflog
#output
b24977c (HEAD -> reinforment_learning) HEAD@{0}: commit: Wang commit new file at new branch
aa63e6e (master) HEAD@{1}: checkout: moving from master to reinforment_learning
aa63e6e (master) HEAD@{2}: reset: moving to aa63e6e
70cdd8c HEAD@{3}: reset: moving to HEAD
70cdd8c HEAD@{4}: reset: moving to 70cdd8c
aa63e6e (master) HEAD@{5}: commit: Wang del file
70cdd8c HEAD@{6}: commit: Second File
c22ef43 HEAD@{7}: reset: moving to HEAD
c22ef43 HEAD@{8}: reset: moving to c22ef43
c22ef43 HEAD@{9}: reset: moving to c22ef43
08564f0 HEAD@{10}: reset: moving to 08564f0
08564f0 HEAD@{11}: reset: moving to 08564f0
08564f0 HEAD@{12}: reset: moving to 08564f0
你只要找到你在第5次修改是提交的备注.就可以切换到那次修改前文件的状态上去.具体的命令如下
#input
git reset --hard c22ef43
#output
HEAD is now at c22ef43 Wang seveth commit
日志显示我们已经,回到hash c22ef43 指针所代表的记录上去 . 就可以看到那个时候文件的具体内容.
后续内容
git 分支