Original Source: Git教程
本文对命令相关内容进行了节选,方便查阅:
{Git for windows}
1. 安装Git:
For Linux:
sudo apt-get install git
For Windows:
Download .exe
2. 创建版本库(Win bash下):
$ cd D:
$ mkdir Git
$ cd Git
通过
git init命令把这个目录变成Git可以管理的仓库:
$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/
$ git add readme.txt
$ git commit -m "wrote a readme file"
[master (root-commit) cb926e7] wrote a readme file
1 file changed, 2 insertions(+)
create mode 100644 readme.txt
E.g.
$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m "add 3 files."
$ 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")
利用
git diff查看文件变化情况,- , + 代表文件变化情况:
$ git diff readme.txt
diff --git a/readme.txt b/readme.txt
index 46d49bf..9247db6 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,2 @@
-Git is a version control system.
+Git is a distributed version control system.
Git is free software.
利用
Git Log命令查看历史记录:
$ git log
commit 3628164fb26d48395383f8f31179f24e0882e1e0
Author: Michael Liao
Date: Tue Aug 20 15:11:49 2013 +0800
append GPL
commit ea34578d5496d7dd233c827ed32a8cd576c5ee85
Author: Michael Liao
Date: Tue Aug 20 14:53:12 2013 +0800
add distributed
commit cb926e7ea50ad11b8f9e909c05226233bf755030
Author: Michael Liao
Date: Mon Aug 19 17:51:55 2013 +0800
wrote a readme file
在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写成HEAD~100。
--hard参数暂时不考虑。
$ git reset --hard HEAD^
HEAD is now at ea34578 add distributed
如果误回退可以通过指定版本号再回到原来的版本:
$ git reset --hard 3628164
HEAD is now at 3628164 append GPL
版本号没必要写全,前几位就可以了,Git会自动去找。
7. 简单理解版本库的工作原理:
第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。
Git管理的是修改,当你用git add命令后,在工作区的第一次修改被放入暂存区,准备提交,而在工作区的修改不会放入暂存区,所以,git commit只会把暂存区的修改提交了。
8. 撤销修改:
git checkout -- file
可以丢弃工作区的修改。
git reset HEAD file
可以把暂存区的修改撤销掉(unstage),重新放回工作区。
如果已经commit可以进行local版本回退,但是如果也已经推送到远程版本库,则会无法撤销修改。
9. 删除文件:
删除工作区中的文件:
$ rm test.txt
删除版本库中的文件:
$ git rm test.txt
rm 'test.txt'
$ git commit -m "remove test.txt"
[master d17efd8] remove test.txt
1 file changed, 1 deletion(-)
delete mode 100644 test.txt
tips:
从版本库中恢复文件:
$ git checkout -- test.txt
git checkout其实是用版本库里的版本替换工作区的版本。