2.Git常用方法

来源:互联网 发布:highcharts ajax json 编辑:程序博客网 时间:2024/06/08 04:20

2.Git常用方法

Git配置

Git第一件事是设置你的Name和Email,这些时你提交的Commit的签名。

$ git config --global user.name "Scott Chacon"

$ git config --global user.email schacon@gmail.com

执行了上面的命令后,会在你的主目录(home directory)建立一个叫 ~/.gitconfig 的文件。内容一般像下面这样:
[user]
  name = Scott Chacon
  email = schacon@gmail.com
初始化仓库
Git仓库有两种方法可以得到它:一种是从已有的Git仓库中clone (克隆,复制);还有一种是新建一个仓库,把未进行版本控制的文件进行版本控制。

1.Clone:

git clone git://git.kernel.org/pub/scm/git/git.git

也可以通过http 协议来访问:
git clone http://www.kernel.org/pub/scm/git/git.git

git://协议较为快速和有效,但是有时必须使用http协议,比如你公司的防火墙阻止了你的非http访问请求.如果你执行了
上面两行命令中的任意一个,你会看到一个新目录: ‘git’,它包含所有的Git源代码和历史记录.
2.新建仓库:
现在假设有一个叫”project.tar.gz”的压缩文件里包含了你的一些文件,你可以用下面的命令让它置于Git的版本控制管理之下.
$ tar xzf project.tar.gz

$ cd project

$ git init

如果你仔细观查会发现project目录下会有一个名叫”.git” 的目录被创建,这意味着一个仓库被初始化了。
正常使用流程
1. 修改文件,将它们更新的内容添加到索引中.
$ git add file1 file2 file3

你可以使用 git diff 命令再加上 –cached 参数 ,看看哪些文件将被提交(commit)。
$ git diff –cached

如果没有–cached参数,git diff 会显示当前你所有已做的但没有加入到索引里的修改.

2. 提交:

$ git commit

除了用git add 命令,我还可以用$ git commit –a,这会自动把所有内容被修改的文件(不包括新创建的文件)都添加到索引中,并且同时把它们提交。commit注释最好以一行短句子作为开头,来简要描述一下这次commit所作的修改(最好不要超过50个字符);然后空一行再把详细的注释写清楚。这样就可以很方便的用工具把commit注释变成email通知,第一行作为标题,剩下的部分就作email的正文.

3. 分支

一个Git仓库可以维护很多开发分支。现在我们来创建一个新的叫“experimental”的分支:

$ git branch experimental

如果你运行下面这条命令:
$ git branch

可以得到当前仓库中存在的所有分支列表。
  experimental
  * master
“experimental” 分支是你刚才创建的,“master”分支是Git系统默认创建的主分支。星号(“*”)标识了你当工作在哪个分支下,输入:
$ git checkout experimental

切换到”experimental”分支,先编辑里面的一个文件,再提交(commit)改动,最后切换回 “master”分支。
输入:
$ git merge experimental

两个分支就有了各自不同的修改(diverged);我们可以通过上面的命令来合并“experimental”和“master”两个分支。
如果这个两个分支间的修改没有冲突(conflict), 那么合并就完成了。如有有冲突,输入下面的命令就可以查看当前有哪些文件产生了冲突:
$ git diff

你可以用 git diff 来比较项目中任意两个版本的差异。
$ git diff master..test

上面这条命令只显示两个分支间的差异,如果你想找出‘master’,‘test’的共有 父分支和’test’分支之间的差异,你用3个‘.’来取代前面的两个’.’ 。
$ git diff master...test

当你编辑了有冲突的文件,解决了冲突后就可以提交了:
$ git commit -a

提交(commit)了合并的内容后就可查看一下:
$ gitk

执行了gitk后会有一个很漂亮的图形的显示项目的历史。
可以通过$ git branch -d experimental删掉分支,git branch -d只能删除那些已经被当前分支的合并的分支. 如果你要强制删除某个分支的话就用git branch –D;
如果你觉得你合并后的状态是一团乱麻,想把当前的修改都放弃,你可以用下面的命令回到合并之前的状态:
$ git reset --hard HEAD

或者你已经把合并后的代码提交,但还是想把它们撒销:
$ git reset --hard ORIG_HEAD

但是刚才这条命令在某些情况会很危险,如果你把一个已经被另一个分支合并的分支给删了,那么 以后在合并相关的分支时会出错。

4. 查看log

Git log命令可以显示所有的提交(commit).

$ git log v2.5..        # commits since (not reachable from) v2.5$ git log test..master  # commits reachable from master but not test$ git log master..test  # commits reachable from test but not master$ git log master...test # commits reachable from either test or master, but not both$ git log --since="2 weeks ago" # commits from the last 2 weeks$ git log Makefile      # commits that modify Makefile$ git log fs/           # commits that modify any file under fs/$ git log -S'foo()'     # commits that add or remove any file data matching the string 'foo()'$ git log --no-merges   # dont show merge commits

如果用–stat选项使用’git log’,它会显示在每个提交(commit)中哪些文件被修改了, 这些文件分别添加或删除了多少行内容.

$ git log –stat

你也可以指定‘–topo-order’参数,这就会让提交(commits)按拓朴顺序来显示(就是子提交在它们的父提交前显示). 如果你用git log命令按拓朴顺序来显示git仓库的提交日志,你会看到“开发线”(development lines)都会集合在一起.
$ git log --pretty=format:'%h : %s' --topo-order –graph

也可以用’–date-order’参数,这样显示提交日志的顺序主要按提交日期来排序. 这个参数和’–topo-order’有一点像,没有父分支会在它们的子分支前显示,但是其它的东东还是按交时间来排序显示。你会看到”开发线”(development lines)没有集合一起,它们会像并行开发(parallel development)一样跳来跳去的
$ git log --pretty=format:'%h : %s' --date-order –graph

可以用 ‘–reverse’参数来逆向显示所有日志
gitcast:c4-git-log

0 0
原创粉丝点击