您的位置:首页 > 其它

Git的学习笔记(一)

2014-04-29 09:50 369 查看
文章摘自:http://git-scm.com/book/zh 第一章 Git的安装yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
yum install git
现在已经可以用 git 命令了,用 git 把 Git 项目仓库克隆到本地,以便日后随时更新:$ git clone git://git.kernel.org/pub/scm/git/git.git
$ yum install git-core
用户信息$ git config --global user.name "John Doe"$ git config --global user.email johndoe@example.com
查看配置信息要检查已有的配置信息,可以使用 git config --list 命令:第二章 Git仓库常用命令
在工作目录中初始化新仓库$ git init
如果当前目录下有几个文件想要纳入版本控制,需要先用 git add 命令告诉 Git 开始对这些文件进行跟踪,然后提交:$ git add *.c$ git add README$ git commit -m 'initial project version'
从现有仓库克隆比如,要克隆 Ruby 语言的 Git 代码仓库 Grit,可以用下面的命令:$ git clone git://github.com/schacon/grit.git
如果希望在克隆的时候,自己定义要新建的项目目录名称,可以在上面的命令末尾指定新的名字:$ git clone git://github.com/schacon/grit.git mygrit
检查当前文件状态要确定哪些文件当前处于什么状态,可以用 git status 命令。如果在克隆仓库之后立即执行此命令,会看到类似这样的输出:$ git statusOn branch masternothing to commit, working directory clean
跟踪新文件使用命令 git add 开始跟踪一个新文件。所以,要跟踪 README 文件,运行:$ git add README此时再运行 git status 命令,会看到 README 文件已被跟踪,并处于暂存状态:$ git statusOn branch masterChanges to be committed: (use "git reset HEAD <file>..." to unstage) new file: README
忽略某些文件一般我们总会有些文件无需纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件模式。来看一个实际的例子:$ cat .gitignore*.[oa]*~
我们再看一个 .gitignore 文件的例子:# 此为注释 – 将被 Git 忽略# 忽略所有 .a 结尾的文件*.a# 但 lib.a 除外!lib.a# 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO/TODO# 忽略 build/ 目录下的所有文件build/# 会忽略 doc/notes.txt 但不包括 doc/server/arch.txtdoc/*.txt# ignore all .txt files in the doc/ directorydoc/**/*.txt
提交更新
用 -m 参数后跟提交说明的方式,在一行命令中提交更新:$ git commit -m "Story 182: Fix benchmarks for speed"
移除文件$ rm grit.gemspec$ git statusOn branch masterChanges not staged for commit: (use "git add/rm <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) deleted: grit.gemspecno changes added to commit (use "git add" and/or "git commit -a")
然后再运行 git rm 记录此次移除文件的操作:$ git rm grit.gemspecrm 'grit.gemspec'$ git statusOn branch masterChanges to be committed: (use "git reset HEAD <file>..." to unstage) deleted: grit.gemspec
另外一种情况是,我们想把文件从 Git 仓库中删除(亦即从暂存区域移除),但仍然希望保留在当前工作目录中。换句话说,仅是从跟踪清单中删除。比如一些大型日志文件或者一堆 .a 编译文件,不小心纳入仓库后,要移除跟踪但不删除文件,以便稍后在 .gitignore 文件中补上,用 --cached 选项即可:$ git rm --cached readme.txt
$ git rm log/\*.log
$ git rm \*~
移动文件$ git mv README.txt README$ git statusOn branch masterChanges to be committed: (use "git reset HEAD <file>..." to unstage) renamed: README.txt -> README

查看提交历史下面的命令列出所有最近两周内的提交:$ git log --since=2.weeks
表 2-3 还列出了其他常用的类似选项。
选项说明
-(n)仅显示最近的 n 条提交
--since,--after仅显示指定时间之后的提交。
--until, --before仅显示指定时间之前的提交。
--author仅显示指定作者相关的提交。
--committer仅显示指定提交者相关的提交。
来看一个实际的例子,如果要查看 Git 仓库中,2008 年 10 月期间,Junio Hamano 提交的但未合并的测试脚本(位于项目的 t/ 目录下的文件),可以用下面的查询命令:$ git log --pretty="%h - %s" --author=gitster --since="2008-10-01" --before="2008-11-01" --no-merges -- t/5610e3b - Fix testcase failure when extended attributeacd3b9e - Enhance hold_lock_file_for_{update,append}()f563754 - demonstrate breakage of detached checkout wid1a43f2 - reset --hard/read-tree --reset -u: remove un51a94af - Fix "checkout --track -b newbranch" on detacb0ad11e - pull: allow "git pull origin $something:$cur

修改最后一次提交如果刚才提交时忘了暂存某些修改,可以先补上暂存操作,然后再运行--amend 提交:$ git commit -m 'initial commit'$ git add forgotten_file$ git commit --amend上面的三条命令最终只是产生一个提交,第二个提交命令修正了第一个的提交内容。

取消已经暂存文件

可以使用 git reset HEAD <file>... 的方式取消暂存。好吧,我们来试试取消暂存 benchmarks.rb 文件:$ git reset HEAD benchmarks.rb

取消对文件的修改可以使用 "git checkout -- <file>..."的方式取消对文件的修改$ git checkout -- benchmarks.rb
远程仓库的使用——查看当前的远程仓库要查看当前配置有哪些远程仓库,可以用 git remote 命令,它会列出每个远程库的简短名字。$ git remote
添加远程仓库要添加一个新的远程仓库,可以指定一个简单的名字,以便将来引用,运行 git remote add$ git remoteorigin$ git remote add pb git://github.com/paulboone/ticgit.git$ git remote -vorigin git://github.com/schacon/ticgit.gitpb git://github.com/paulboone/ticgit.git现在可以用字符串pb指代对应的仓库地址了。比如说,要抓取所有 Paul 有的,但本地仓库没有的信息,可以运行 git fetch pb:$ git fetch pbremote: Counting objects: 58, done.remote: Compressing objects: 100% (41/41), done.remote: Total 44 (delta 24), reused 1 (delta 0)Unpacking objects: 100% (44/44), done.From git://github.com/paulboone/ticgit * [new branch] master -> pb/master * [new branch] ticgit -> pb/ticgit
现在,Paul 的主干分支(master)已经完全可以在本地访问了,对应的名字是 pb/master,你可以将它合并到自己的某个分支,或者切换到这个分支,看看有些什么有趣的更新。从远程仓库抓取数据$ git fetch [remote-name]
推送数据到远程仓库$ git push origin master
查看远程仓库信息我们可以通过命令 git remote show [remote-name] 查看某个远程仓库的详细信息,比如要看所克隆的 origin 仓库,可以运行:$ git remote show origin* remote origin URL: git://github.com/schacon/ticgit.git Remote branch merged with 'git pull' while on branch master master Tracked remote branches master ticgit远程仓库的删除和重命名在新版 Git 中可以用 git remote rename 命令修改某个远程仓库在本地的简称,比如想把 pb 改成paul,可以这么运行:$ git remote rename pb paul$ git remoteoriginpaul注意,对远程仓库的重命名,也会使对应的分支名称发生变化,原来的 pb/master 分支现在成了paul/master。
碰到远端仓库服务器迁移,或者原来的克隆镜像不再使用,又或者某个参与者不再贡献代码,那么需要移除对应的远端仓库,可以运行 git remote rm 命令:$ git remote rm paul$ git remoteorigin
新建标签$ git tag -a v1.4 -m 'my version 1.4'
显示已有的标签$ git tag
可以使用 git show 命令查看相应标签的版本信息,并连同显示打标签时的提交对象。$ git show v1.4
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息