GIT 操作备忘录

git init

git add .

git commit

git commit --amend //修改最后一次的提交

git show

git log

配置当前用户提交的姓名,邮箱,编辑器

git config --global user.name "name"

git config --global user.mail youmail@example.com

git config --global core.editor vim

/etc/gitconfig 文件:系统中对所有用户都普遍适用的配置。若使用 git config 时用 --system 选项,读写的就是这个文件。

~/.gitconfig 文件:用户目录下的配置文件只适用于该用户。若使用 git config 时用 --global 选项,读写的就是这个文件。

当前项目的 git 目录中的配置文件(也就是工作目录中的 .git/config 文件):这里的配置仅仅针对当前项目有效。对应 git config --local 选项

注:每一个级别的配置都会覆盖上层的相同配置,所以 .git/config 里的配置会覆盖 /etc/gitconfig 中的同名变量。

帮助,例如下

git log --help

man git log

对比

git diff //工作目录中当前文件和暂存区域快照之间的差异

git diff --cache //已经暂存起来的文件和上次提交时的快照之间的差异

git diff --staged //同上

查看日志

git log -p -2 //查看最近的两次更新,查看每次提交的内容差异

git log --stat //

git log --oneline --graph --decorate --all

git log --name-status

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 commit --amend

git reset HEAD newfile.name //取消已经暂存的文件

git checkout newfile.name //取消对文件的修改

git reset HEAD~2 //撤销add,commit操作,保留本地文件的修改

git reset [--mixed] HEAD^^ //同上,reset 不添加指令,默认的操作

git reset --hard <hash> //直接回退到hash值标定的那一个版本

git reset --soft <hash> //撤销commit 的操作,保留添加到暂存区的修改

补丁

git diff > ~/000.diff //利用git diff生成unix标准补丁

git format-patch <hash> -n //利用提交生成Git专用补丁文件,从hash值开始,生成n个补丁,默认生成到当前目录

git format-patch <hash> <hash> //两次hash值之间的所有提交都生成补丁

git format-patch -M origin/master //-M 选项允许 Git 检查是否有对文件重命名的提交

patch -p1 < ~/000.diff //打补丁,其中1指忽视几层(/),非事务性

patch -R p1 < ~/000.diff //撤销应用的补丁

git apply --stat new.patch //检查patch文件

git apply --check new.patch //检查能否应用成功

git apply ~/000.patch //打补丁,事务性补丁,仅仅是更新当前的文件,所以此命令不会自动生成提交对象,需要验证???

git am new.patch //应用format-patch生成的补丁

忽略某些文件

1. 在git仓库根目录下新建  .gitignore 文件

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

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

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

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

* glob 模式:

星号(*)匹配零个或多个任意字符;

[abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);

问号(?)只匹配一个任意字符;

如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)

远程仓库

git remote

git remote -v //查看远程仓库,并显示对应的克隆地址

git remote add [shortName] [URL] //添加远程仓库

git fetch [remote-name] //将远端的数据拉到本地仓库,需要手动合入;会抓取从你上次克隆以来别人上传到此远程仓库中的所有更新

git pull // == git fetch ,git merge

git push orign master

git remote show remoteName //查看远程仓库的详细信息

git remote rename oldName newName //远程仓库重命名

git remote rm remoteName //远程仓库删除

小技巧:自动补全

使用 Bash shell,可以试试Git提供的自动补全脚本。将contrib/completion/git-completion.bash 文件复制到用户主目录下,并改为隐藏文件cp git-completion.bash ~/.git-completion.bash,并把下面一行内容(source ~/.git-completion.bash)添加到你的 .bashrc 文件中

使用时敲击两次tab键

小技巧:git 命令别名,例

git config --global alias.st status

git config --global alias.br branch

git config --global alias.last 'log -1 HEAD'

使用:git st

vi ~/.gitconfig

在 [alias] 下面一栏添加

        alias.logl = log --oneline --decorate --graph

        alias.logal = log --oneline --decorate --graph --all

分支

git branch newBranchName //新建分支

git checkout newBranchName //切换分支

git checkout -b newBranchName // ==新建并切换到分支

git branch -d branch //删除分支

git merge newBranch //当前分支合并newBranch ,并保留原有的index

git rebase master //衍合当前分支到master分支,从两个分支共同祖先的节点开始衍合,之前分支上的旧节点消失,生成新的节点

git rebase master server //把server分支衍合衍合到master,而不是从两个节点的共同祖先开始衍合

git rebase --onto master branchA branchB //取出branchB分支,找出A,B分支的共同祖先之后的变化,然后在master当前节点上衍合

PS:一旦分支中的提交对象发布到公共仓库,就千万不要对该分支进行衍合操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值