有关git版本管理的介绍,参考https://blog.csdn.net/cymy001/article/details/81262819
git add <file>:告诉Git,把“文件”添加到“仓库”
git commit -m <file>:告诉Git,把“文件”提交到“仓库”
git status:查看仓库当前的状态【修改信息】
YYwhdeMacBook-Pro:GITWORKSPACE yywh$ touch readme.txt
YYwhdeMacBook-Pro:GITWORKSPACE yywh$ git add readme.txt #将文件从工作区加到暂存区
YYwhdeMacBook-Pro:GITWORKSPACE yywh$ git commit -m "+ one flie" #将暂存区文件加到分支
[master (root-commit) 59dcbd5] + one flie
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 readme.txt
YYwhdeMacBook-Pro:GITWORKSPACE yywh$ git status #查看版本库/仓库当前状态
On branch master
nothing to commit, working tree clean
Git比其他版本控制系统设计得优秀,因为Git跟踪并管理的是修改,而非文件。
如何提交多次修改?
(1)先git add
-> 第一次修改,然后git commit;再
git add
-> 第二次修改,然后git commit!
(2)先git add
-> 第一次修改,再git add
-> 第二次修改,最后一起git commit
,就相当于把两次修改合并后一块提交了。
git diff <file>:查看文件修改前后差异,显示的格式是Unix通用的diff格式
YYwhdeMacBook-Pro:GITWORKSPACE yywh$ cat readme.txt
YYwhdeMacBook-Pro:GITWORKSPACE yywh$ vim readme.txt
YYwhdeMacBook-Pro:GITWORKSPACE yywh$ cat readme.txt
git maybe better than svn
I just want to try another version management
YYwecashdeMacBook-Pro:GITWORKSPACE yywecash$ git add readme.txt
YYwecashdeMacBook-Pro:GITWORKSPACE yywecash$ git commit -m "modify readme.txt"
[master c8c2c16] modify readme.txt
1 file changed, 2 insertions(+)
YYwecashdeMacBook-Pro:GITWORKSPACE yywecash$ git status
On branch master
nothing to commit, working tree clean
YYwhdeMacBook-Pro:GITWORKSPACE yywh$ git diff readme.txt #查看工作区文件修改前后差异
diff --git a/readme.txt b/readme.txt
index e69de29..85487de 100644
--- a/readme.txt
+++ b/readme.txt
@@ -0,0 +1,2 @@
+git maybe better than svn
+I just want to try another version management
git log:显示从最近到最远的提交日志
git log –pretty=oneline:显示简版提交日志
YYwhdeMacBook-Pro:GITWORKSPACE yywh$ git log #显示全部提交日志记录
commit c8c2c16de9f8065a4f2945db947bef39d23a024e (HEAD -> master)
Author: Yu Yg <898486@qq.com>
Date: Sat Jul 28 23:07:16 2018 +0800
modify readme.txt
commit 59dcbd5dd97eb47518942b3b97bdb4f3ebd08447
Author: Yu Yg <898486@qq.com>
Date: Sat Jul 28 22:02:35 2018 +0800
+ one flie
YYwhdeMacBook-Pro:GITWORKSPACE yywh$ git log --pretty=oneline #显示简版提交记录
c8c2c16de9f8065a4f2945db947bef39d23a024e (HEAD -> master) modify readme.txt
59dcbd5dd97eb47518942b3b97bdb4f3ebd08447 + one flie
git reset –hard HEAD^:版本回退
git reset –hard [+commitid]:找回刚被删掉的提交id是commitid的版本
上一个版本是HEAD^,上上一个版本是HEAD^^,当然往上100个版本是HEAD~100。Git在回退版本时,其内部有个指向当前版本的HEAD指针。
YYwhdeMacBook-Pro:GITWORKSPACE yywh$ git reset --hard HEAD^ #回退版本
HEAD is now at 59dcbd5 + one flie
YYwhdeMacBook-Pro:GITWORKSPACE yywh$ git log --pretty=oneline
59dcbd5dd97eb47518942b3b97bdb4f3ebd08447 (HEAD -> master) + one flie
YYwhdeMacBook-Pro:GITWORKSPACE yywh$ git reset --hard c8c2c16 #找回回退版本
HEAD is now at c8c2c16 modify readme.txt
YYwhdeMacBook-Pro:GITWORKSPACE yywh$ git log --pretty=oneline
c8c2c16de9f8065a4f2945db947bef39d23a024e (HEAD -> master) modify readme.txt
59dcbd5dd97eb47518942b3b97bdb4f3ebd08447 + one flie
git reflog:记录每一次命令
YYwhdeMacBook-Pro:GITWORKSPACE yywh$ git reflog #
c8c2c16 (HEAD -> master) HEAD@{0}: reset: moving to c8c2c16
59dcbd5 HEAD@{1}: reset: moving to HEAD^
c8c2c16 (HEAD -> master) HEAD@{2}: commit: modify readme.txt
59dcbd5 HEAD@{3}: commit (initial): + one flie
git diff HEAD -- readme.txt:查看工作区和版本库里面最新版本的区别
YYwhdeMacBook-Pro:GITWORKSPACE yywh$ cat readme.txt
git maybe better than svn
I just want to try another version management
YYwhdeMacBook-Pro:GITWORKSPACE yywh$ vim readme.txt
YYwhdeMacBook-Pro:GITWORKSPACE yywh$ cat readme.txt
git maybe better than svn
I just want to try another version management
I just want to tey the diff function of git!!!
YYwhdeMacBook-Pro:GITWORKSPACE yywh$ git diff HEAD -- readme.txt #查看工作区和版本库的文件差异
diff --git a/readme.txt b/readme.txt
index 85487de..f95a964 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,3 @@
git maybe better than svn
I just want to try another version management
+I just want to tey the diff function of git!!!
git checkout -- <file>:文件没添加暂存区,在工作区修改错了,撤回修改
git reset HEAD <flie>+git checkout -- <file>:工作区修改错,然后将错的添加到暂存区,撤回修改
YYwhdeMacBook-Pro:GITWORKSPACE yywh$ touch testwrong.txt
YYwhdeMacBook-Pro:GITWORKSPACE yywh$ ls
readme.txt testwrong.txt
YYwhdeMacBook-Pro:GITWORKSPACE yywh$ cat testwrong.txt
YYwhdeMacBook-Pro:GITWORKSPACE yywh$ vim testwrong.txt
YYwhdeMacBook-Pro:GITWORKSPACE yywh$ cat testwrong.txt
git may be stupid,haha...
YYwhdeMacBook-Pro:GITWORKSPACE yywh$ git add testwrong.txt
YYwhdeMacBook-Pro:GITWORKSPACE yywh$ git commit -m "+wrong example" #将文件提交到版本库
[master 981b076] +wrong example
1 file changed, 1 insertion(+)
create mode 100644 testwrong.txt
YYwhdeMacBook-Pro:GITWORKSPACE yywh$ vim testwrong.txt #工作区修改文件
YYwhdeMacBook-Pro:GITWORKSPACE yywh$ cat testwrong.txt
git may be stupid,haha...
Is git really better than svn?
YYwhdeMacBook-Pro:GITWORKSPACE yywh$ git diff HEAD -- testwrong.txt
diff --git a/testwrong.txt b/testwrong.txt
index 29c3afa..4798cf4 100644
--- a/testwrong.txt
+++ b/testwrong.txt
@@ -1 +1,2 @@
git may be stupid,haha...
+Is git really better than svn?
YYwhdeMacBook-Pro:GITWORKSPACE yywh$ git checkout -- testwrong.txt #撤销工作区修改
YYwhdeMacBook-Pro:GITWORKSPACE yywh$ git diff HEAD -- testwrong.txt
YYwhdeMacBook-Pro:GITWORKSPACE yywh$ touch testwrong.txt
YYwhdeMacBook-Pro:GITWORKSPACE yywh$ vim testwrong.txt
YYwhdeMacBook-Pro:GITWORKSPACE yywh$ cat testwrong.txt
git may be stupid,haha...
YYwhdeMacBook-Pro:GITWORKSPACE yywh$ git add testwrong.txt
YYwhdeMacBook-Pro:GITWORKSPACE yywh$ git commit -m "+wrong example"
[master 981b076] +wrong example
1 file changed, 1 insertion(+)
create mode 100644 testwrong.txt
YYwhdeMacBook-Pro:GITWORKSPACE yywh$ vim testwrong.txt
YYwhdeMacBook-Pro:GITWORKSPACE yywh$ cat testwrong.txt
git may be stupid,haha...
a wrong change add to temporary area
YYwhdeMacBook-Pro:GITWORKSPACE yywh$ git add testwrong.txt #将修改提交到暂存区
YYwhdeMacBook-Pro:GITWORKSPACE yywh$ git diff HEAD -- testwrong.txt
diff --git a/testwrong.txt b/testwrong.txt
index 29c3afa..29b546a 100644
--- a/testwrong.txt
+++ b/testwrong.txt
@@ -1 +1,2 @@
git may be stupid,haha...
+a wrong change add to temporary area
YYwhdeMacBook-Pro:GITWORKSPACE yywh$ git reset HEAD testwrong.txt #丢弃提交到暂存区的修改,退回到工作区
Unstaged changes after reset:
M readme.txt
M testwrong.txt
YYwhdeMacBook-Pro:GITWORKSPACE yywh$ git checkout -- testwrong.txt #将工作区修改丢弃
YYwhdeMacBook-Pro:GITWORKSPACE yywh$ git diff HEAD -- testwrong.txt
git checkout <file>:用“版本库里的版本”替换“工作区的版本”,无论工作区是修改还是删除,都可以“一键还原”
git rm <file>:将文件从版本库中删除
YYwhdeMacBook-Pro:GITWORKSPACE yywh$ ls
readme.txt testwrong.txt
YYwhdeMacBook-Pro:GITWORKSPACE yywh$ rm testwrong.txt
YYwhdeMacBook-Pro:GITWORKSPACE yywh$ ls
readme.txt
YYwhdeMacBook-Pro:GITWORKSPACE yywh$ git checkout testwrong.txt #用版本库恢复本地删除的文件
YYwhdeMacBook-Pro:GITWORKSPACE yywh$ ls
readme.txt testwrong.txt
YYwhdeMacBook-Pro:GITWORKSPACE yywh$ git rm testwrong.txt #删除版本库里的文件
rm 'testwrong.txt'
YYwhdeMacBook-Pro:GITWORKSPACE yywh$ ls
readme.txt