用户工具

站点工具


git_notes

Git 笔记

Resources

Tools

GitX(L)

SourceTree

  • free Mac client for Git, Mercurial and SVN version control systems [据说是 Mac 下最好的 Git GUI client]
  • Mac

msysgit

TortoiseGit

Git Extensions

SmartGit

Resource

Git Hosting

bitbucket

Git Enterprise

Commands

初始设置

  • git config --global user.name "Scott Chacon"
  • git config --global user.email "schacon@gmail.com"

基本操作

在某个目录中 git init,在当前目录中初始化一个空的 git 仓库,如果想把此目录中的文件纳入仓库管理,需要 add 进去。

查看当前 git 仓库状态用 git status。

把未纳入版本管理的或者修改过的文件放入暂存区要用 git add [文件(夹)],后面可以是一个文件也可以是通配符代表的一组文件,如果跟一个目录名,那这个目录下的所有内容都会被递归的加入到暂存区里。想把已经加入到暂存区里的文件删掉的话,可以用 git reset HEAD 文件。

把文件恢复到未修改状态可以用 git checkout -- 文件名。

比较工作拷贝和暂存区副本的区别可以直接用 git diff。比较暂存区和已经提交的版本之间的区别可以用 git diff --staged。

要把暂存区内容提交到版本库里可以用 git commit -m “提交说明”。如果想不经过暂存区,直接把已经纳入版本管理,又经过了修改的文件提交到版本库,可以用 git commit -a -m “提交说明”。如果想修正刚才的提交,可以在再做些修改之后用 git commit --amend,这样在版本历史里只会看到这一次提交,上一次提交被这一次所取代了。

想要从版本库中移除某文件,以后不再进行追踪管理的话,需要使用 git rm foobar(会同时删除本地文件)。如果在移除前该文件已经被加入过暂存区,则需要加 -f 参数来移除:git rm -f foobar。如果想在保留本地文件的同时删除暂存区中的文件的话,需要加 --cached 参数:git rm --cached foobar。

做文件改名操作需要用 git mv foo bar。这个命令也可以用于目录改名,还可以用来把文件从一个目录移动到另外一个目录。总之跟 Unix 的 mv 命令作用基本一致。

查看提交历史可以用 git log [-p] [-数字];-p 可以在显示历史的同时显示每次提交之间的差异;-数字 可以只列出来最近的几次提交。另外还可以自定义输出格式,比较灵活,具体可以参考这里。gitk 可以用 GUI 工具查看图形化的历史记录。

远程仓库操作

创建 SSH 公钥可以用如下命令行:ssh-keygen -C “email@email.com” -t rsa。

从现有的仓库中克隆:
git clone git@github.com:foo/bar.git [目录名]
不指定目录名的话会在当前目录下创建一个名为 bar 的目录,其中有个名为 .git 的仓库目录;加了目录名的话就会在指定的目录里创建 .git 仓库。

查看远程仓库的 url 信息用 git remote -v,默认的远程仓库的短名字是 origin。查看详细的远程仓库信息用 git remote show [remote-name]。

添加远程仓库用 git remote add 短名字 url。(这样一来,当前目录下还是只有一个 .git 吗?这个 .git 目录里加入了新内容而已?)给远程仓库改短名字可以用 git remote rename old new。删除远程仓库要用 git remote rm 短名字。

从远程仓库抓取本地没有的内容用 git fetch [短名字],默认克隆过来远程仓库名是 origin,所以 git fetch origin 就是抓取默认克隆的远程仓库,需要注意的是,fetch 出来的内容不会自动合并到当前工作分支,而是需要手工合并。所以更常用的是 git pull,它会自动把远程仓库的新内容抓下来而且合并到当前的工作分支里。

把本地数据推送到远程仓库可以用 git push [remote-name] [branch-name],把本地数据推送到默认克隆仓库的 master 分支用 git push origin master。

打标签相关

打标签命令示例:git tag -a v1.4 -m 'my version 1.4'。后面还可以再跟上某此提交的 SHA-1,这样可以给之前的某此提交打上标签。

git tag 可以查看现有标签。查看标签详细信息用 git show 标签名。

默认情况下 git push 并不推送标签,推送特定标签用 git push origin v1.5,推送本地所有标签用 git push origin --tags。

git_notes.txt · 最后更改: 2013/09/16 12:22 由 2ndboy