首先需要安装git,Linux和Mac比较方便可以用apt-get install git(Linux),brew install git(在安装了homebrew的Mac上),windows可以直接下载msysgit,安装即可。
完成安装之后记得给自己写上门牌号:
git config --global user.name "Your Name"
git config --global user.email "eamil@example.com"
1、创建版本库
如何在本地创建Git的版本库。
在你想要保存版本库的文件目录下(注:尽量使用英文名做目录名),使用
git init
使用后会提示你:
Initialized empty Git repository in your repository path
在目录下会出现一个.git文件夹,应该是默认为隐藏文件夹,调出来即可。
2、Git结构概述
3、创建readme.txt
在git目录下,创建一个文本文档,内容随意写,保存为readme.txt。
(1)文件提交
git add readme.txt
告诉git提交的文件是什么——提交到暂存区
git commit -m "first version of readme file"
可以利用-m为这次提交的文件写注释,方便未来的版本控制时,让你明白你在提交这个文件的时候做了什么。
当然,你可以一次性add多个文件,在利用commit提交的时候,也可以一次性写多个文件。
commit:犯罪;承诺;委托;托付。(理解?)
git commit 提交更改,将暂存区内容提交到当前分支。
(2)本地版本控制
git status
用来查看repository的当前状态。
D:\myFirstGit>git status
On branch master
nothing to commit, working tree clean
接下来,修改readme.txt.,再利用git status来查看自己的repository。
D:\myFirstGit>git status
On branch master
Changes not staged for commit:
(use "git add..." to update what will be committed)
(use "git checkout --..." to discard changes in working directory)
modified: readme.txt
no changes added to commit (use "git add" and/or "git commit -a")
说明修改过后还没有进行add 与 commit做提交。试试commit之后git status是什么样。
D:\myFirstGit>git add readme.txt
D:\myFirstGit>git commit -m "lol added"
[master 36d72f9] lol added
1 file changed, 2 insertions(+), 1 deletion(-)
这个操作把我们修改过的内容提交到了目前的分支上。
D:\myFirstGit>git status
On branch master
nothing to commit, working tree clean
再利用git status查看目前状态,发现没有修改了但是还未提交的内容。
git diff
git diff 来查看修改前后的不同。
D:\myFirstGit>git diff readme.txt
diff --git a/readme.txt b/readme.txt
index 88b9dbc..37b890d 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,3 @@
ReadMe First Please!
-Lol!
\ No newline at end of file
+Lol!
+Changes had been changed.
\ No newline at end of file
windows下使用type来看看readme.txt里面写了什么(跟Linux下的cat一样):
D:\myFirstGit>type readme.txt
ReadMe First Please!
Lol!
Changes had been changed.
重新add 和 commit 之后,就已经把最新修改的内容放入了你的repository中。
git log
git log <filename>来查看目前文件一共有多少个版本。
D:\myFirstGit>git log readme.txt
最近一次修改
commit 63580d24072303d79a2fe6ea10407bba644c2d32 (HEAD -> master) #HEAD指向目前版本
Author: WZChan 进行修改的用户
Date: Fri Sep 29 11:19:53 2017 +0800 进行修改的时间
changes 显示在git commit -m 后所标注的内容
倒数第二次修改
commit 36d72f9e0c8d763571277a2d93158c3b948e7fd6
Author: WZChan
Date: Fri Sep 29 11:04:19 2017 +0800
lol added
倒数第三次修改
commit 03f1920945cd99987dd56a57ae0420d0e91c01e1
Author: WZChan
Date: Fri Sep 29 10:58:30 2017 +0800
myFirstGitFile
如果不需要更多信息,可以试试 git log --pretty=oneline <filename>
D:\myFirstGit>git log --pretty=oneline readme.txt
63580d24072303d79a2fe6ea10407bba644c2d32 (HEAD -> master) changes
36d72f9e0c8d763571277a2d93158c3b948e7fd6 lol added
03f1920945cd99987dd56a57ae0420d0e91c01e1 myFirstGitFile
在上述操作时会有一串“乱码”是commit id,在稍后的版本回溯中会用到。
git reset
reset有三种方式:
git reset –mixed:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息
git reset –soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可
git reset –hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容
目前我想要把我的文件回退到commit为lol added的版本,也就是第二次修改的版本中。
执行:
git reset --hard 36d72
D:\myFirstGit>git reset --hard 36d72
HEAD is now at 36d72f9 lol added
可以看到目前的HEAD指向了lol added,而我们输入的那一段数字就是所谓的commit id
检查一下:
D:\myFirstGit>git log --pretty=oneline readme.txt
36d72f9e0c8d763571277a2d93158c3b948e7fd6 (HEAD -> master) lol added
03f1920945cd99987dd56a57ae0420d0e91c01e1 myFirstGitFile
如果要回去到changes的版本,则相应的去寻找commit id,执行:
git reset --hard 63580d
结果:
D:\myFirstGit>git log --pretty=oneline readme.txt
63580d24072303d79a2fe6ea10407bba644c2d32 (HEAD -> master) changes
36d72f9e0c8d763571277a2d93158c3b948e7fd6 lol added
03f1920945cd99987dd56a57ae0420d0e91c01e1 myFirstGitFile
git reflog
可以查看历史命令。
从而方便利用其来寻找自己文件版本的commit id。
网友评论