[关闭]
@guoxs 2015-08-30T09:40:25.000000Z 字数 3710 阅读 2667

git基础

前端工具


重温一下git, 总结了一些git常用命令。
笔记参考廖雪峰的git教程:git教程

安装git

在Linux上安装Git:

  1. sudo apt-get install git : DebianUbuntu Linux
  2. sudo apt-get install git-core : 老一点的DebianUbuntu Linux

如果是其他Linux版本,可以直接通过源码安装。先从Git官网下载源码,然后解压,依次输入:./configmakesudo make install这几个命令安装就好了。

在Mac OS X上安装Git

第一种、安装homebrew,然后通过homebrew安装Git,具体方法请参考homebrew的文档:http://brew.sh/
第二种、从AppStore安装Xcode,Xcode集成了Git,不过默认没有安装,你需要运行Xcode,选择菜单“Xcode”->“Preferences”,在弹出窗口中找到“Downloads”,选择“Command Line Tools”,点“Install”就可以完成安装了。

在Windows上安装Git

下载一个单独的sysgit.exe安装程序
安装完成后,还需要最后一步设置,在命令行输入:

  1. $ git config --global user.name "Your Name"
  2. $ git config --global user.email "email@example.com"

创建版本库

首先,选择一个合适的地方,创建一个空目录:

  1. $ mkdir learngit
  2. $ cd learngit
  3. $ pwd

windows系统目录尽量不要用中文
第二步,通过git init命令把这个目录变成Git可以管理的仓库:

  1. $ git init

这两步后会生成一个.git目录,默认隐藏,可用'ls -ah'命令就可以看见

git对文件的操作

文件的添加

  1. $ git add <filename>
  2. $ git commit -m "本次提交的说明"

版本库:
版本库
add files:
add files
commit之后:
commit之后

文件修改

  1. $ git status : 查看仓库当前状态
  2. $ git diff <filename> : 查看difference,显示的格式是Unix通用的diff格式

版本回退

  1. $ git log : 显示从最近到最远的提交日志
  2. $ git log --pretty=oneline : 强制一行显示一条记录
  3. $ git reset --hard HEAD^ 回退到上一个版本
  4. $ git reset --hard commit_id : 回退到指定版本
  5. $ git reflog 记录每一次命令,可用于查找commit_id

管理修改

  1. $ cat <filename> : 读文件
  2. $ git diff HEAD -- <filename> : 查看工作区和版本库里面最新版本的区别
  3. $ git checkout -- <filename> : 丢弃工作区的修改
  4. $ git reset HEAD <filename> : 把暂存区的修改撤销掉(unstage
  5. $ rm <filename> : 直接在文件管理器中删除文件
  6. $ git rm <filename> + git commit : 从版本库中删除文件

远程仓库github

创建SSH Key

  1. $ ssh-keygen -t rsa -C "youremail@example.com"

一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsaid_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,id_rsa.pub是公钥。
登陆GitHub,打开“Account settings”,“SSH Keys”页面,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容,点“Add Key”,你就应该看到已经添加的Key。

添加远程库

首先在github上新建一个Repository,在本地的仓库下运行命令:

  1. $ git remote add origin git@github.com:michaelliao/learngit.git
  2. $ git push -u origin master : 第一次把本地库的所有内容推送到远程库上
  3. $ git push origin master 非第一次
  4. $ git clone git@github.com:michaelliao/gitskills.git 从远程库克隆

clone时,GitHub给出的地址不止一个,还可以用https://github.com/michaelliao/gitskills.git这样的地址。实际上,Git支持多种协议,默认的git://使用ssh,但也可以使用https等其他协议。

使用https除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令,但是在某些只开放http端口的公司内部就无法使用ssh协议而只能用https。

分支管理

创建与合并分支

  1. $ git checkout -b dev : 创建dev分支,然后切换到dev分支
  2. 相当于:$ git branch dev + $ git checkout dev
  3. $ git branch 查看当前分支
  4. $ git merge dev : dev分支的工作成果合并到master分支上
  5. $ git branch -d dev : 删除dev分支
  6. $ git branch -D dev : 强行删除

branch

解决冲突

这种情况下无法执行“快速合并”,需手动修改
冲突

  1. $ git log --graph --pretty=oneline --abbrev-commit 图形方式展示分支情况

分支管理策略

通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。

  1. $ git merge --no-ff -m "merge with no-ff" dev : 不使用Fast forward模式

不使用Fast forward模式:
不使用Fast forward模式
团队合作的分支看起来就像这样:
git 分支管理

Bug分支

  1. $ git stash : 把当前工作现场“储藏”起来,等以后恢复现场后继续工作
  2. $ git stash list : 查看储存的工作现场
  3. $ git stash apply : 恢复工作现场
  4. $ git stash drop : 删除stash储存的工作现场
  5. $ git stash pop :恢复的同时把stash内容也删了

多人协作

  1. $ git remote : 查看远程库的信息
  2. $ git remote -v : 显示更详细的信息
  3. $ git push origin master : 推送分支
  4. $ git clone @... : 抓取分支
  5. $ git checkout -b dev origin/dev : 创建远程origindev分支到本地

若多人同时推送冲突,需先用git pull把最新的提交从origin/dev抓下来,然后,在本地合并,解决冲突,再推送。

  1. $ git branch --set-upstream dev origin/dev : 指定本地dev分支与远程origin/dev分支的链接

多人协作的工作模式通常是这样:

标签管理

创建标签

  1. $ git tag <name> : 创建标签
  2. $ git tag : 查看所有标签
  3. $ git log --pretty=oneline --abbrev-commit : 补打标签
  4. $ git show <tagname> 查看标签信息
  5. $ git tag -a v0.1 -m "version 0.1 released" 3628164 : 创建带有说明的标签,用-a指定标签名,-m指定说明文字
  6. $ git tag -s v0.2 -m "signed version 0.2 released" fec145a : 通过-s用私钥签名一个标签

操作标签

  1. $ git tag -d <tagname> : 删除标签
  2. $ git push origin --tags 一次性推送全部尚未推送到远程的本地标签
  3. $ git push origin :refs/tags/<tagname> 删除远程标签

自定义Git

  1. $ git config --global color.ui true : Git显示颜色

忽略特殊文件

忽略某些文件时,需要编写.gitignore
.gitignore文件本身要放到版本库里,并且可以对.gitignore做版本管理。

配置别名

  1. $ git config --global alias.st status : st表示status

配置Git的时候,加上--global是针对当前用户起作用的,如果不加,那只针对当前的仓库起作用。
每个仓库的Git配置文件都放在.git/config文件中,别名就在[alias]后面,要删除别名,直接把对应的行删掉即可。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注