Chinaunix首页 | 论坛 | 博客
  • 博客访问: 382773
  • 博文数量: 104
  • 博客积分: 652
  • 博客等级: 上士
  • 技术积分: 1477
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-04 15:20
文章分类

全部博文(104)

文章存档

2019年(1)

2015年(8)

2014年(6)

2013年(59)

2012年(30)

分类: LINUX

2013-10-20 23:45:49

2005年,Linus花了两周时间自己用C写了Git分布式版本控制系统。

分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库

安装Git:
linux:
下载git源码包tar zxvf git-1.8.4.tar.gz
./configure --prefix=/usr/local
make && make install

windows:
msysgit是Windows版的Git,从下载,然后按默认选项安装即可。

安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!

msysgit-bash



设置用户信息:
# git config --global user.name "Your Name"
# git config --global user.email "email@example.com"

创建一个版本库:
# mkdir lulu
# cd lulu
# pwd
# git init 
Initialized empty Git repository in /home/ch/.git/

添加文件到Git仓库,分两步:
第一步,使用命令git add ,注意,可反复多次使用,添加多个文件;
第二步,使用命令git commit,完成。
# touch a b c
# git add a b c
# git commit -m "add 3 files."

工作区的状态,使用git status命令。
# git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached ..." to unstage)
#
#	new file:   a
#	new file:   b
#	new file:   c 

git diff可以查看修改内容
# git diff 
diff --git a/a b/a
index 190a180..b1bd38b 100644
--- a/a
+++ b/a
@@ -1 +1 @@
-123
+13 

版本回退:
使用git log查看历史记录,加上?--pretty=oneline参数可简化输出
# git log
commit fc9f6f979844121f0281efab8dd8873994718ce4
Author: lulu 
Date:   Sat Oct 19 16:49:48 2013 +0800

    vim a

commit edffae908974fdf18882a0d444a2fe320516a85c
Author: lulu 
Date:   Sat Oct 19 16:40:39 2013 +0800

    add a b c files  
# git log --pretty=oneline
fc9f6f979844121f0281efab8dd8873994718ce4 vim a
edffae908974fdf18882a0d444a2fe320516a85c add a b c files 
在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。
# git reset --hard HEAD^
HEAD is now at edffae9 add a b c files 

Git提供一个命令git reflog用来记录每一次命令:
# git reflog
edffae9 HEAD@{0}: reset: moving to HEAD^
fc9f6f9 HEAD@{1}: reset: moving to fc9f6f9
edffae9 HEAD@{2}: reset: moving to edffae9
fc9f6f9 HEAD@{3}: commit: vim a
edffae9 HEAD@{4}: commit (initial): add a b c files

Git每次修改,如果不add到暂存区,那就不会加入到commit中。

当改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。
当不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改。首先用命令git checkout -- file将修改从缓存区移到工作区,然后用命令git checkout -- file丢弃工作区的修改。

删除文件:
# rm a
rm: remove regular file `a'? y
# git rm a
rm 'a'
# git commit -m "delete a"
[master b2ee4aa] delete a
 1 file changed, 1 deletion(-)
 delete mode 100644 a



待解决问题:
git add 之前 git diff X  可以显示文件修改的不同
git add 之后则不能显示,只能用git diff HEAD -- X 显示不同 
git commit 之后则git diff HEAD -- X 不能显示不同
阅读(755) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~