git用法

一、基本用法

1、全局配置

$ git config --global user.name "Your Name Comes Here"
$ git config --global user.email you@yourdomain.example.com

2、初始化

$ cd project
$ git init

3、保存当前目录内容(快照)

$git add . //快照为一些记录新增、修改、删除的内容的索引文件(index),保存在一个临时区域中
$git add file1 file2 file3 //添加指定文件修改内容到索引文件中

$git diff //查看所有不在索引文件中的修改
$git diff --cached //查看未提交的索引文件中包含了那些修改
$git status //查看所有未提交索引文件包含和不包含的修改信息
$git checkout file1 //丢弃当前对file1做的修改。如果索引缓存区中有该文件修改的版本,则取回;如果没有,则从最后提交的版本(HEAD)中取回

$git commit //提交索引,将当前目录内容的版本保存在git数据库中。注意:只要索引缓存区有修改内容的索引就可以提交,而不管索引是不是最新的,是不是全的
$git commit -a //提交修改文件的索引,将当前目录内容的版本保存在git数据库中,不包含新文件

4、查看修改历史

$git log //查看修改历史
$git log -p //查看完全的每一步的修改
$git log --stat --summary //查看概要的修改信息

5、创建分支

$git branch //查看当前已有分支
$git branch test //创建test分支
$git checkout test //切换到test分支
$git checkout master //切换到master分支
$git merge test //将test分支合并到当前分支,如存在修改冲突,需要先解决冲突
$git branch -d test //合并完成后,删除test分支
$git branch -D test //强制删除 test 分支,不管合并没有

6、恢复到上一次提交

$git reset --hard HEAD^ //丢弃当前的修改和提交,恢复到上一次提交

7、恢复本地已删除且已提交(commit)的文件

$git checkout HEAD~1 -- welcom.txt //HEAD~1相当于HEAD^,即HEAD的上一次提交

8、恢复本地删除还未提交(commit)的文件

$git ls-files -d | xargs -i git checkout '{}'

9、图形git

$gitk

二、分布式应用

1、目标

1)客户端能够将项目保存到服务器端
2)客户端能够将对项目的修改保存到服务器端
3)客户端能够从服务器端保存的项目下载、同步到客户端

2、步骤

1)建立http服务器

http://ubuntukylin.net

2)设置项目URL: http://ubuntukylin.net/projects/

OS: CentOS 6.5 (注意:ubuntu12.04以后的版本配置apache的方法不一样)

修改/etc/httpd/conf/http.conf,添加下面的配置,建立虚拟目录/projects
Alias /projects "/data/project-git-repo"
<Directory "/data/project-git-repo">

Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all

</Directory>

重启http服务
#service httpd restart

3)建立public repository

$git clone --bare devconf/ devconf.git
$touch devconf.git/git-daemon-export-ok

$scp -r devconf.git/ wlyxs@wlyxs252:/data/project-git-repo/

$ssh wlyxs@wlyxs252 //登陆服务器

$chmod 0755 /data/project-git-repo -R //设置目录访问权限:rwxr_xr_x,让httpd能访问该目录及其子目录

$cd /data/project-git-repo/devconf.git
$git --bare update-server-info
$mv hooks/post-update.sample hooks/post-update

至此,可以通过http://ubuntukylin.net/projects/devconf.git访问public repository了。但是不能修改public repository中的内容,需要使用ssh

4)使用public repository

将修改后的项目master分支和prototype分支推送(push)到服务器端,建议设置ssh无密码登陆,否则需要输入SSH登录密码
$git push ssh://wlyxs@ubuntukylin.net/data/projects/devconf.git master
简化方法:
$git remote add devconf-repo ssh://wlyxs@ubuntukylin.net/data/project-git-repo/devconf.git
$git push devconf-repo master

推送prototype分支
$git push ssh://wlyxs@ubuntukylin.net/data/projects/devconf.git prototype:prototype

将项目主分支master克隆到客户端本地,客户端原来没有项目
$git clone http://ubuntukylin.net/projects/devconf.git

将项目分支prototype克隆到客户端本地,客户端原来没有项目
$git clone http://ubuntukylin.net/projects/devconf.git -b prototype

将服务器端repository中修改过的项目同步(pull)到客户端的repository中,客户端原来有项目
$git pull http://ubuntukylin.net/projects/devconf.git master 

三、技巧

1、自动完成
下载 Git 的源代码,进入 contrib/completion 目录,会看到一个 git-completion.bash 文件。将此文件复制到你自己的用户主目录中(译注:按照下面的示例,还应改名加上点:cp git-completion.bash ∼/.git-completion.bash),并把下面一行内容添加到你的 .bashrc 文件中:
source ~/.git-completion.bash

(未完待续)

=-=-=-=-=
Powered by Blogilo

原文地址:https://www.cnblogs.com/pandachen/p/4065384.html