版本管理:Git 使用起步(一)

来源:互联网 发布:人工智能在线观看土豆 编辑:程序博客网 时间:2024/06/05 03:39


链接:Git的优点

主要内容: 

获取git / 配置git

建立项目仓库/ 本地创建 / 从远程库获取

添加更新文件

忽略某些文件

检查文件状态 / 版本比较




获取Git

$apt-get install git



配置Git

Git相关的环境变量可存放于以下三个位置:

/etc/gitconfig:系统级别  git config --system 
~/.gitconfig: 当前用户 git config --global
.git/config 文件:当前项目

每一个级别的配置都会覆盖上层的相同配置,所以.git/config 里的配置会覆盖/etc/gitconfig 中的同名变量。


首先要配置的是用户名和邮箱,每次Git提交的时候会引用此信息:

$git config --global user.name "Nwahs"$git config --global user.email example@gmail.com


配置文本编辑器:

$ git config --global core.editor vim

配置文本比较工具:

$ git config --global merge.tool vimdiff


完成后查看配置文件:

$ cat ~/.gitconfig [color]ui = auto[core]editor = vim[user]name = Nwahsemail = example@gmail.com


查看当前配置

sahwn@EP43:~/IdeaProjects/untitled$ git config --listcolor.ui=autocore.editor=vimuser.name=Nwahsuser.email=example@gmail.comcore.repositoryformatversion=0core.filemode=truecore.bare=falsecore.logallrefupdates=true

查看帮助文档:

$git --help$git help add


----------------------------------------------------


建立项目仓库(Repository):

情形1  如果已有项目:

    进入项目目录,如下命令,会生成.git目录

$  git init

    添加文件到版本控制:

$   git add *.java

这样文件就进入到 Staging Area



如果想从版本控制中去除文件(不删除文件本身),使用如下命令:

$  git rm --cached [-fr] <dir/file>

被撤销的文件将不会被commit进入到本地repository


提交入库:

$  git commit -m "message"


上传本地库至代码托管网址:

$ git remote add origin https://nwahs@example.org/git/nawhs.git$ git push -u origin --all Password for 'https://nwahs@example.org': To https://nwahs@example.org/git/nawhs.git * [new branch] master -> masterBranch master set up to track remote branch master from origin.$ git push -u origin --tagsPassword for 'https://nwahs@example.org': Everything up-to-date




情形2  从现有仓库clone

$ git clone git://github.com/schacon/grit.git  


也可以指定clone到本地某文件夹:

$  git clone  git://github.com/schacon/girt.git  my_dir


忽略某些文件:

有3种方法可以实现  $HOME/.config/git/ignore,  $GIT_DIR/info/exclude,   .gitignore,这里用最后一种。


创建.gitignore 文件,当前目录及子目录下所有符合其规定的文件都将被忽略。

如果子目录也有此配置文件,则会覆盖上级目录的配置。更详尽的读取顺序,请参考:http://git-scm.com/docs/gitignore


一些规范和例子:

0  只针对untracked文件

1  所有空行和#开头的行无视之

2  !取反,之前被忽略的文件可以重新被包括进来。

     但是如果某文件的某个父目录被忽略的话,此条对其无效。

# 此为注释 – 将被 Git 忽略*.a   # 忽略所有 .a 结尾的文件!lib.a    # 但 lib.a 除外

     所以当只包括foo/bar目录时,应如下:

    # exclude everything except directory foo/bar    /*    !/foo    /foo/*    !/foo/bar


3  最后跟反斜杠(/)说明要忽略的是目录。

4  星号(*)匹配零个或多个任意字符;

    [abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);

    如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如[0-9] 表示匹配所有 0 到 9 的数字)。

    问号(?)只匹配一个任意字符;

/TODO     # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODObuild/    # 忽略 build/ 目录下的所有文件doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt


5  \为转义字符
\!important!.txt  # 表示!important!.txt不会被忽略

6  **可以任意匹配

**/foo  #可匹配目录下所有名字为foo的文件或目录,比如a/b/foo,c/foo/,c/d/foofoo/**  #匹配foo目录下所有文件和目录a/**/b  #可匹配 a/x/y/b,或者a/z/b等






检查当前文件状态:

$ git status

详情参考:http://blog.jobbole.com/25808/


修改后的文件,同样使用如下命令进行Stage

$ git add benchmarks.rb



查看状态更新:

检查已修改(modified)的文件同已暂存(staged)的文件的区别,

即working dir 和 staging area的区别:

$ git diff


检查已暂存(staged)的文件和上次提交(commited)的区别:

$ git diff --cached

跳过暂存区进行提交, Git会将所有track的文件一起暂存并提交:

$ git commit -a -m 'added new benchmarks'


//-----------------------------

参考文章:http://blog.jobbole.com/25775/

0 0
原创粉丝点击