GIT(global information tracker),全局信息跟踪器----------一个版本控制工具
git bush的应用。
* 首先在本地创建一个仓库(repository)
1. 创建一个目录
2. 将目录初始化为一个仓库
Administrator@USERCHI-ESLRVCD MINGW64 ~
$ mkdir aha //在当前目录下创建一新目录
Administrator@USERCHI-ESLRVCD MINGW64 ~
$ cd aha //进入该目录下
Administrator@USERCHI-ESLRVCD MINGW64 ~/aha
$ pwd //查看当前文件所处目录
/c/Users/Administrator/aha
Administrator@USERCHI-ESLRVCD MINGW64 ~/aha
$ git init //将当前目录初始化为repository(仓库)
Initialized empty Git repository in C:/Users/Administrator/aha/.git
注意:在创建的仓库目录下多了一个.git文件,其作用是为了用来跟踪版本库的
* 新建文件提交代码
1. 在git仓库下新建一readme.txt文件,注意该文件不能用电脑自带的纯文本文件创建,可以用其他工具如:notepad++。。。
2. 将更改的文件添加到暂存区
3. 将暂存区的文件进行提交
Administrator@USERCHI-ESLRVCD MINGW64 ~/aha (master)
$ git add readme.txt //将文件添加到暂存区,添加多个文件时,可以多次反复使用。
Administrator@USERCHI-ESLRVCD MINGW64 ~/aha (master)
$ git commit -m "the first" //将暂存区的文件提交,其中 -m后输入的时本次提交的说明,必填,最好是有意义的说明
[master (root-commit) 6dae22e] the first
1 file changed, 1 insertion(+)
create mode 100644 readme.txt
* 查看版本库的状态,比如进行了那些更改
git log命令用于查看提交历史,
--pretty=oneline
,这个参数的作用是为了让记录信息显示在一行,内容进行了一定是缩减
git reset --hard HEAD^
,将当前版本回退到前一个版本,其中HEAD表示当前版本,HEAD表示上一个版本,HEAD^表示上上个版本,之前更远的版本可以用HEAD~3来表示
git reset --hard commit_id
,如果回退到某个版本以后,后悔了,想返回到新版本时,我们该怎么办呢。可以查看相关数据,找到最新版本的Commit_id,如果在当前页面找不到时,可以通过命令 git reflog来查找。。。
git reflog
,查看命令历史,以便确定回到那个版本。
Administrator@USERCHI-ESLRVCD MINGW64 ~/myRepository (master)
$ git log --pretty=oneline
5a811fd6b0cb6d69c3ed684d6cda1c9c850fc3e3 (HEAD -> master) slideShow
2e91ce59216c4c8544978f879906cd838c204e82 more inlustrate
2e898702643f11e52f9945549b60ef9b88e6dfc7 (origin/master) push journey sed
139f0d86faaff21fb20a785d639bab99072511b3 push the journey
f76b74ac06c22871addbe8cd5a161056e49ccd17 Initial commit
Administrator@USERCHI-ESLRVCD MINGW64 ~/myRepository (master)
$ git reset --hard HEAD^
HEAD is now at 2e91ce5 more inlustrate
Administrator@USERCHI-ESLRVCD MINGW64 ~/myRepository (master)
$ git reset --hard 5a811fd6
HEAD is now at 5a811fd slideShow
Administrator@USERCHI-ESLRVCD MINGW64 ~/myRepository (master)
$ git log --pretty=oneline
5a811fd6b0cb6d69c3ed684d6cda1c9c850fc3e3 (HEAD -> master) slideShow
2e91ce59216c4c8544978f879906cd838c204e82 more inlustrate
2e898702643f11e52f9945549b60ef9b88e6dfc7 (origin/master) push journey sed
139f0d86faaff21fb20a785d639bab99072511b3 push the journey
f76b74ac06c22871addbe8cd5a161056e49ccd17 Initial commit
Administrator@USERCHI-ESLRVCD MINGW64 ~
$ cd myRepository
Administrator@USERCHI-ESLRVCD MINGW64 ~/myRepository (ma ster)
$ git reflog
5a811fd (HEAD -> master) HEAD@{0}: reset: moving to 5a81 1fd6
2e91ce5 HEAD@{1}: reset: moving to HEAD^
5a811fd (HEAD -> master) HEAD@{2}: reset: moving to 5a81 1fd6b0c
2e91ce5 HEAD@{3}: reset: moving to 2e91ce59
2e91ce5 HEAD@{4}: reset: moving to HEAD^
5a811fd (HEAD -> master) HEAD@{5}: commit: slideShow
2e91ce5 HEAD@{6}: commit: more inlustrate
2e89870 (origin/master) HEAD@{7}: rebase finished: retur ning to refs/heads/master
2e89870 (origin/master) HEAD@{8}: pull --rebase origin m aster: push journey sed
139f0d8 HEAD@{9}: pull --rebase origin master: push the journey
f76b74a HEAD@{10}: pull --rebase origin master: checkout f76b74ac06c22871addbe8cd5a161056e49ccd17
:...skipping...
5a811fd (HEAD -> master) HEAD@{0}: reset: moving to 5a811fd6
2e91ce5 HEAD@{1}: reset: moving to HEAD^
5a811fd (HEAD -> master) HEAD@{2}: reset: moving to 5a811fd6b0c
2e91ce5 HEAD@{3}: reset: moving to 2e91ce59
2e91ce5 HEAD@{4}: reset: moving to HEAD^
5a811fd (HEAD -> master) HEAD@{5}: commit: slideShow
2e91ce5 HEAD@{6}: commit: more inlustrate
2e89870 (origin/master) HEAD@{7}: rebase finished: returning to refs/heads/master
2e89870 (origin/master) HEAD@{8}: pull --rebase origin master: push journey sed
139f0d8 HEAD@{9}: pull --rebase origin master: push the journey
f76b74a HEAD@{10}: pull --rebase origin master: checkout f76b74ac06c22871addbe8cd5a161056e49ccd17
79768ac HEAD@{11}: commit: push journey sed
73e9ffd HEAD@{12}: commit (initial): push the journey
* 撤消修改,假如你对文件README.md进行了修改,想进行撤销
git checkout -- file
,丢弃工作区的修改
注意:git checkout – file 命令中的 --不可省略,否则就变成了切换分支。
git reset HEAD file
,可以吧暂存区的修改回退到工作区,当我们用HEAD时,表示最新的版本。
该语句的结果有两种情况:
一种是修改后未添加到暂存区,撤销后就回到和版本库一模一样的状态,即最近的git commit
另一种状态是将修改添加到了暂存区后,在做了修改,撤销后就回到最近暂存区的状态,即最近的git add
* 当你有想删除的文件时
git rm file,用于删除文件
git checkout -- file,当你发现文件删除错误时,可以恢复之前的操作,git checkout的作用是用来将版本库里的文件替换工作区里的文件。