Git是世界上最先进的分布式版本控制系统
CVS/SVN 都是免费的集中式版本控制系统,不但速度慢,而且需要联网。
对于集中式版本控制系统,版本库集中存放在中央服务器中,而分布式,没有“中央服务器",每个主机上都会有一个完整的版本库。
Git的基本操作:包括对每个文件的修改,删除,git都能跟踪,以便于任何时刻能够追踪历史,还原过去的某一个时刻。
1.git init 初始化一个仓库,在该文件夹下生成一个.git的文件夹,.git是用来跟踪管理版本库的。
PS D:\repository> git init
Initialized empty Git repository in D:/repository/.git/
2.git add 添加一个文件到暂存区。
PS D:\repository> git add readme.txt
3.git commit -m “提交说明” 将暂存区全部提交到当前分支。
PS D:\repository> git commit -m "wrote a readme file"
[master (root-commit) 953fa79] wrote a readme file
1 file changed, 2 insertions(+)
create mode 100644 readme.txt
4.git status 掌握仓库当前的状态,看文件是否修改,add之后是否体提交。
PS D:\repository> git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: readme.txt
no changes added to commit (use "git add" and/or "git commit -a")
5.git diff 查看修改的内容。
PS D:\repository> git diff readme.txt
diff --git a/readme.txt b/readme.txt
index d8036c1..013b5bc 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.
6.git log 查看提交历史,显示从最远到最近的提交日志,其中可以看到提交版本号commit id(根据SHA1计算出来的一个非常大的数字,用十六进制表示)git log --pretty=oneline,简化版log。
PS D:\repository> git log --pretty=oneline
816930cbd5350684006a1dada7ed78dc7bda25bc (HEAD -> master) append GPL
169900f958c22fd433e12140bafc7e668b918e80 add distributed
953fa7905cbe38d47bde4236387ab1e83045cc09 wrote a readme file
7.git reset --hard HEAD^ 回溯到上一个版本,HEAD^^表示上上个版本,HEAD~100,上100个版本,也可以是commit id,版本号,可以不用写全。就可以做到向前回溯,或是回到未来。
PS D:\repository> git reset --hard 816930
HEAD is now at 816930c append GPL
8.git reflog 找不到commit id的时候,可以通过查看命令历史得到。
PS D:\repository> git reflog
816930c (HEAD -> master) HEAD@{0}: reset: moving to 816930
169900f HEAD@{1}: reset: moving to 16990
169900f HEAD@{2}: reset: moving to HEAD^
816930c (HEAD -> master) HEAD@{3}: commit: append GPL
169900f HEAD@{4}: commit: add distributed
953fa79 HEAD@{5}: commit (initial): wrote a readme file
9.git checkout -- filename 撤销操作。
10.git rm xx 删除文件。
11.git remote add origin git@git@github.com:xxx/repository.git 添加远程库。
12.git push -u origin master 将本地库上的所有文件推送到远程库上。