Ahri-珊

这篇博客将记录一些git指令。

Git笔记

git commit –amend

  1. 暂存区有新文件

提交当前的暂存区快照并覆盖之前的commit

  1. 暂存区没有新文件

可重新修改之前commit信息

git fetch <远程主机名> <远程分支名称>

  1. git fetch之后 $ git checkout -b newBrach origin/master

在远程分支的基础上新建一个分支newBrach

  1. git fetch之后 $ git merge origin/master 或 $ git rebase origin/master

把远程分支与当前分支合并(前者相当于直接git pull,后者相当于git pull –rebase)

rebase与merge区别:rebase得到的树是一条直线,merge会新建一个节点将远程分支与当前分支连起来 详细点这里

git push

  1. git push

将当前分支提交到与其关联的远程分支

  1. git push <远程主机名> <本地分支名>:<远程分支名>

将<本地分支名>提交到<远程主机名>/<远程分支名>

–本地分支名为空的时候相当于删除<远程主机名>/<远程分支名>

  1. git push <远程主机名> <分支名>

将本地的<分支名>提交到<远程主机名>/<分支名>

git pull

与git push 用法差不多,本地分支名与远程分支名交换即可,意义是将远程的拉到本地

git add

  1. git add .(git add -A)

添加所有改动文件到暂存区

git add .: [<文件地址>]

将path中的改动文件添加到暂存区

  1. git add -u

添加除新增文件外的改动文件到暂存区

  1. git add -p

每个除新增文件外的改动文件会一个一个列出改动的地方,并询问你是否添加到暂存区

git reset(不要在公共分支上使用)

  1. git reset HEAD <文件名>

将暂存区的文件<文件名>从暂存区移除

  1. git reset –mixed HEAD <文件名>

同1

  1. git reset –hard HEAD <文件名>

将暂存区的文件<文件名>从暂存区和工作区删除

  1. git reset HEAD(~1,~2…)

将当前分支回退1,2…提交。

git checkout

  1. git checkout -p <分支名>

比较当前分支与<分支名>的差别,并一个一个询问你要不要在当前分支应用这个差别

  1. git checkout -b <分支名>

创建<分支名>,并切换到这个分支

  1. git checkout –merge <分支名>

切换分支的同时,把当前分支的改动也复制到<分支名>

  1. git checkout HEAD~(1,2,3)

将当前分支的head回退1,2,3,再切换到新的分支就会把head指向的commit移到新的分支

git stash

  1. git stash

将未添加到暂存区的修改文件放入栈

  1. git stash pop

将栈里的文件取出

git cherry-pick

a.在当前分支找到要移动的commit的id

b.切换到需要此commit的分支

c.git cherry-pick (可能需要解决冲突)

git branch

  1. git branch

查看本地所有分支

  1. git branch -d <分支名>

删除分支<分支名>(-D:强行删除)

  1. git branch -r

查看所有远程分支

  1. git branch -a

查看所有分支

  1. git branch -m <分支名>

新建分支<分支名>并切换到分支<分支名>

  1. git branch -f <分支名>

将分支<分支名>的head指向当前分支指向的commit

  1. git branch -f <分支名>

将分支<分支名>的head指向commit

git rebase(不要在公共分支上使用)

  1. git rebase -i head(~2,~3…)

rebase的时候可以编辑

git revert(可在公共分支上使用)

  1. git revert head(~1,~2…)

将代码回滚1,2…个版本,并且保存回滚之前commit

git blame

  1. git blame

查看这个文件每一行的修改记录()

  1. git blame -L <行号1>,<行号2>

查看这个文件行号1到行号2的修改记录

git diff

  1. git diff <分支名>

查看当前分支与分支<分支名>的差别

  1. git diff –cached

查看暂存区与当前HEAD指向版本的差异

git whatchanged -p

查看每个commit与上一个的差异

git reflog

查看所有commit,包括被删除的,配合git cheery-pick 可以恢复commit

git tag

  1. git tag #

打印出当前仓库的所有标签

  1. git tag <标签名>

创建标签<标签名>

  1. git tag -d <标签名>

删除标签<标签名>

  1. git push origin <标签名>

把标签传送到远程仓库

  1. git push origin –tags

将本地所有新增标签传送到远程仓库

End