初始化
git init 目录下会出现 .git 的目录,所有 Git 需要的数据和资源都存放在这个目录 中
从现有仓库Clone
git clone [url]
git clone [url] name clone 下来的项目目录更改为 name
查看文件仓库状态
git status
跟踪新文件(将已跟踪的文件加入暂存区)
git add [fileName]
忽略文件
cat .gitignore
# 此为注释 – 将被 Git 忽略
*.a # 忽略所有 .a 结尾的文件
!lib.a # 但 lib.a 除外
/TODO # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO build/
build/ # 忽略 目录下的所有文件
doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
规则:
/ :表示目录
* :表示通配多个字符
? :表示通配单个字符
[] :包含单个字符的匹配列表
! :表示不忽略
# :注释
/folder/ :过滤整个文件夹
/folder/past.text :过滤具体某个文件
*.zip :过滤所有zip文件
!aa.zip :不过滤aa.zip文件
!/folder/need.text :不过滤具体文件
备注:
1、.gitignore 文件需要在第一次push之前上传,上传后增加则无效(已经管理了,增加 忽略规则也无效)
2、git 对 .gitignore 文件是按 行从上到下匹配 (即若前面的范围大于后面的范围,则后面的不生效)
3、.gitignore 文件只作用于 未被跟着的文件,即 添加后未 add 及 commit 过。若被跟踪过,则无效
4、针对 .gitignore 不生效的办法:清除本地缓存(即改为未跟踪状态)
git rm -r --cached . //清理缓存
git add . //重新 trace file
git commit -m 'update .gitignore' //提交
查看修改内容
git diff 显示还没有暂存起来的改动,而不是这次工作和上次提交之间的差异
git diff --cached
git diff --staged
提交更新
git commit -m "xxx"
git commit -a -m "xxx" 会自动把所有已经跟踪过的文件暂 存起来一并提交
移除文件
git rm grit.gemspec
如果删除之前修改过并且已经放到暂存区域的话,则必须 要用强制删除选项 -f
git rm --cached readme.txt 仅是从跟踪清单中删除
移动文件
git mv file_from file_to (同一目录下,即为改名操作)
查看提交历史
git log
选项 说明
-p 按补丁格式显示每个更新之间的差异。
--stat 显示每次更新的文件修改统计信息。
--shortstat 只显示 --stat 中最后的行数修改添加移除统计。
--name-only 仅在提交信息后显示已修改的文件清单。
--name-status 显示新增、修改、删除的文件清单。
--abbrev-commit 仅显示 SHA-1 的前几个字符,而非所有的 40 个字符。
--relative-date 使用较短的相对时间显示(比如,“2 weeks ago”)。
--graph 显示 ASCII 图形表示的分支合并历史。
--pretty 使用其他格式显示历史提交信息。可用的选项包括 oneline,short,full,fuller 和 format(后跟指定格式)。
按照时间作限制的选项,比如 --since 和 --until
git log --since=2.weeks
选项 说明
-(n) 仅显示最近的 n 条提交
--since, --after 仅显示指定时间之后的提交。
--until, --before 仅显示指定时间之前的提交。
--author 仅显示指定作者相关的提交。
--committer 仅显示指定提交者相关的提交。
撤消操作
git commit --amend
git reset HEAD <file> 取消已经暂存的文件
git checkout -- benchmarks.rb 取消对文件的修改
远程仓库
git remote 查看当前配置有哪些远程仓库
git remote -v 显示对应的克隆地址
git remote add [shortname] [url]: 添加新的远程仓库
git fetch [remote-name] 从远程仓库抓取数据
fetch 命令只是将远端的数据拉到本地仓库,并不自动合并到当前工作分支,只有当你确实准备好 了,才能手工合并
git pull 从原始克隆的远 端仓库中抓取数据后,合并到工作目录中当前分支
git push [remote-name] [branch-name] 推送数据到远程仓库
git remote show [remote-name] 查看某个远程仓库的详细信息
git remote rename name newName 重命名
git remote rm 移除 对应的远端仓库
标签
git tag 列出现有标签
git tag -l 'v1.4.2.*' 筛选
git tag -a v1.4 -m 'my version 1.4' 创建一个含附注类型的标签
git show 查看相应标签的版本信息
git tag -s v1.5 -m 'my signed 1.5 tag' 签署标签
git tag v1.4-lw 轻量级标签(保存着对应提交对象的校验和信息的文件)
git tag -v [tag-name] 验证已经签署的标签
git tag -a v1.2 9fceb02 后期加注标签
git push origin [tagName] 分享标签
git push origin --tags 一次推送所有(本地新增的)标签
git tag -d name 删除本地tag
git push origin :refs/tags/tagName 删除远程tag
git tag -l 查看本地tag
git show-ref --tag 查看远程tag