您的位置:首页 > 其它

git学习笔记

2017-08-21 16:40 176 查看

Git 基本操作

1. git clone <url or ssh>   从远端库克隆至本地
2. git pull –u origin       拉取在本地
3. git push –u origin       推至远端库
4. git init [dir]           初始化一个库
5. git add <-A or path>     添加文件
6. git rm <file>            删除文件
7. git commit –m '…'        提交并说明


Git 标签管理

命令git tag <name>用于新建一个标签,默认为HEAD,也可以指定一个commit id;
git tag -a <tagname> -m "blablabla..."可以指定标签信息;
git tag -s <tagname> -m "blablabla..."可以用PGP签名标签;
命令git tag可以查看所有标签。
命令git push origin <tagname>可以推送一个本地标签;
命令git push origin --tags可以推送全部未推送过的本地标签;
命令git tag -d <tagname>可以删除一个本地标签;
命令git push origin :refs/tags/<tagname>可以删除一个远程标签。


Git 版本管理

git reset <commit_id or HEAD^>回滚到指定版本中
git log 查看操作的日志,从日志中可以看到commid_id
git log --pretty=oneline    这样看起来舒服点
git remote add origin git@github.com:PencilMR/mengran_test


Git库的建立

git init --bare gitrepo.git     ##建立一个可以远程push的库


配置用户信息

git config --global user.name "name"
git config --global user.email mail@example.com
git config --list       ##查看当前的配置信息


如果用了–global 选项,那么更改的配置文件就是位于你用户主目录下的那个,以后的项目都会默认使用这里配置的用户信息。如果要在某个特定的项目中使用其他名字,只要去掉–global 选项重新配置即可,新的设定保存在当前项目的.git/config文件里。

修改git的默认编辑器

git config --global core.editor vim     ##默认为vim
git config --global merge.tool vimdiff  ##修改默认差异分析工具


查看当前的状态

git status


忽略库中的一些无用文件

$ cat .gitignore   #在当前目录里建立此文件,就会生效,忽略的规则写在里面
*.[oa]          #忽略所有以 .o 或 .a 结尾的文件
*~             #忽略所有以波浪符(~)结尾的文件


.gitignore 的格式规范如下:

所有空行或者以注释符号 # 开头的行都会被 Git 忽略。

可以使用标准的 glob 模式匹配。

匹配模式最后跟反斜杠(/)说明要忽略的是目录。

要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。

\# 此为注释 – 将被 Git 忽略
\*.a # 忽略所有 .a 结尾的文件
!lib.a # 但 lib.a 除外
/TODO # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
build/ # 忽略 build/ 目录下的所有文件
doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt


文件差异比较

git diff        #当前文件和暂存区域快照之间的差异
git diff --cached   #已经暂存起来的文件和上次提交时的快照之间的差异
git diff --staged   #同上
git diff ab34f 12fdca #比较两个记录的差异


git的删除操作

git rm <file>           #删除文件(类似于git add <file>)
git rm --cached <file>  #只从git库中删除


文件的移动和重命名

git mv file_from file_to


查看提交的历史

git log     #查看所有的提交历史
git log --stat ##查看非详细改动
git log -p -2   #-p查看详细提交,-2查看最近两次提交
git log --pretty=oneline        #单行显示日志
git log --since=2.weeks     #两周内的提交


–pretty=format:”…” #可以定制输出日志

git log –pretty=format:”%h - %an, %ar : %s”

%H 提交对象(commit)的完整哈希字串
%h 提交对象的简短哈希字串
%T 树对象(tree)的完整哈希字串
%t 树对象的简短哈希字串
%P 父对象(parent)的完整哈希字串
%p 父对象的简短哈希字串
%an 作者(author)的名字
%ae 作者的电子邮件地址
%ad 作者修订日期(可以用 -date= 选项定制格式)
%ar 作者修订日期,按多久以前的方式显示
%cn 提交者(committer)的名字
%ce 提交者的电子邮件地址
%cd 提交日期
%cr 提交日期,按多久以前的方式显示
%s 提交说明


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(后跟指定格式)。

提交的撤销操作

git commit --amend

eg:
$ git commit -m 'initial commit'
$ git add forgotten_file
$ git commit --amend


上面只产生了一次提交。

git的远程操作

git clone <url>     #克隆远程仓库至本地
git remote -v   #查看所有的远程仓库
git remote add [shortname] [url]    #添加一个远程仓库
git fetch origin    #获取远程仓库origin有,而本地没有的内容
git push [remote-name] [branch-name]        #将本地推送至远程服务器上。
git remote show [remote-name] #查看远程仓库的详细信息
git remote rename pb paul   #远程仓库重命名


git的分支操作

git branch                  #查看所有的分支
git branch -v               #查看各分支最后一个commit信息
git branch <branch name>    #创建一个新的分支
git checkout <branch name>  #切换到这个分支
git checkouut -b <branch name> #创建并切换到这个分支
git merge <branch name> #将当前分支与目标分支合并
git branch --no-merged      #查看为合成的操作
git branch -d <branch name> #删除分支
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  git