Git
初始化
git config --global user.name "填写自己的用户名" # 配置个人用户名
git config --global user.email "填写自己的邮箱号" # 电子邮件地址
git config --global core.autocrlf false # 结束符CRLF和LF 之间转换
git status
查看当前文件的状态
git stash
将当前工作目录中尚未提交的所有更改(包括暂存区和未暂存的修改)临时存储到stash堆栈中
- git stash saveshell
git stash save -u "注释" # -u 表示还工作区中新增的文件 # 不加u只会存储工作区中已经存在的文件的修改
- git stash list
- git stash push 同 save
- git stash pop 弹出
- git stash apply 读
- git stash drop 删
git add
把指定的文件添加到暂存区中
git add
文件路径
添加所有修改、已删除的文件到暂存区中
git add -u
文件路径
git add --update
文件路径
添加所有修改、已删除、新增的文件到暂存区中,省略
文件路径
即为当前目录git add -A
文件路径
git add --all
文件路径
查看所有修改、已删除但没有提交的文件,进入一个子命令系统
git add -i
文件路径
git add --interactive
文件路径
git commit
把暂存区中的文件提交到本地仓库,调用文本编辑器输入该次提交的描述信息
git commit
把暂存区中的文件提交到本地仓库中并添加描述信息
git commit -m"
提交的描述信息
"把所有修改、已删除的文件提交到本地仓库中
不包括未被版本库跟踪的文件,等同于先调用了 "git add -u"
git commit -a -m "
提交的描述信息
"修改上次提交的描述信息
git commit --amend
git commit --amend --no-edit
git log
显示提交的记录。
git log
git log --pretty=oneline
git log --oneline
git log --pretty=short
空格 下翻页 b 上翻页 q 退出
打印从第一次提交到指定的提交的记录 git log
commit ID
包含回滚信息 git reflog
git shortlog
用于生成提交者的统计信息,它会按照提交者对提交的数量进行汇总并展示
git shortlog -s -n
- -n 根据每个作者的提交数量对输出进行排序,而不是按照作者的字母顺序。
- -s summary,省略 commit 的注释,只提供提交计数摘要。
- -e 显示每个作者的电子邮件地址。
git reset
还原提交记录。
重置暂存区,但文件不受影响
相当于将用 "git add" 命令更新到暂存区的内容撤出暂存区,可以指定文件
没有指定 commit ID 则默认为当前 HEAD
git reset
文件路径
git reset --mixed
文件路径
将 HEAD 的指向改变,撤销到指定的提交记录,文件未修改
git reset
commit ID
git reset --mixed
commit ID
将 HEAD 的指向改变,撤销到指定的提交记录,文件未修改
相当于调用 "git reset --mixed" 命令后又做了一次 "git add"
git reset --soft
commit ID
将 HEAD 的指向改变,撤销到指定的提交记录,文件也修改了
git reset --hard
commit ID
git reset --hard HEAD~3 回退3步
git reset --hard HEAD^^^ 回退3步
--soft 在本地库(历史区)移动HEAD指针
--mixed 在本地库移动HEAD指针 重置暂存区,
--hard 在本地库移动HEAD指针 重置暂存区和工作区。
git rebase
git rebase -i
- p, pick = use commit
- r, reword = use commit, but edit the commit message
- e, edit = use commit, but stop for amending
- s, squash = use commit, but meld into previous commit
- f, fixup = like "squash", but discard this commit's log message
- x, exec = run command (the rest of the line) using shell
- d, drop = remove commit
不要在 master(公共) 分支 rebase
找到两条节点的共同节点
把共同节点后的提交嫁接到目标分支上
嫁接节点的 commit 值会改变
移动HEAD到最新的commit处
git - --continue
git revert
会产生新的提交记录
git revert -e <commit ID> # 默认选项
git revert --no-edit <commit ID>
# 会把当前 commit 和要 revert 的 commit 的上一个 commit 合并成一个新的 commit
git revert -n / --no-commit <commit ID>
# 不会自动产生commit,把改动的代码加到工作区和暂存区,用户可以自行修改并提交commit。
reset命令是重置到一个记录:git reset 是将之前的提交记录全部抹去,将 HEAD 指向自己重置的提交记录.
revert命令是撤回一个记录;git revert 操作是撤回某一次提交记录,若之后又有提交,提交记录还存在.
git merge
- git merge
- 合并分支。
- 把指定的分支合并到当前所在的分支下
- 根据两分支的共同节点和最新节点生成一个新的提交 commit
- git merge
分支名称
git cherry-pick
- 把已经提交的记录合并到当前分支。
- git cherry-pick
commit ID
- pick 两个节点 1和3
- git cherry-pick
commit ID1
commit ID3
- pick (节点1,节点3] 不包含节点1
- git cherry-pick
commit ID1
..commit ID3
- pick [节点1,节点3] 包含节点1
- git cherry-pick
commit ID1
^..commit ID3
git tag
操作标签的命令。
打印所有的标签
git tag
添加轻量标签,指向提交对象的引用,可以指定之前的提交记录
git tag
标签名称
commit ID
添加带有描述信息的附注标签,可以指定之前的提交记录
git tag -a
标签名称
-m标签描述信息
commit ID
切换到指定的标签
git checkout
标签名称
查看标签的信息
git show
标签名称
删除指定的标签
git tag -d
标签名称
git mv
- 重命名文件或者文件夹。
- 重命名指定的文件或者文件夹
- git mv
源文件/文件夹
目标文件/文件夹
git rm
删除文件或者文件夹。
移除跟踪指定的文件,并从本地仓库的文件夹中删除
git rm
文件路径
移除跟踪指定的文件夹,并从本地仓库的文件夹中删除
git rm -r
文件夹路径
移除跟踪指定的文件,在本地仓库的文件夹中保留该文件
git rm --cached
git remote
操作远程库。
列出已经存在的远程仓库
git remote
列出远程仓库的详细信息,在别名后面列出URL地址
git remote -v
git remote --verbose
添加远程仓库
git remote add
远程仓库的别名
远程仓库的URL地址
修改远程仓库的别名
git remote rename
原远程仓库的别名
新的别名
删除指定名称的远程仓库
git remote remove
远程仓库的别名
修改远程仓库的 URL 地址
git remote set-url
远程仓库的别名
新的远程仓库URL地址
git pull
从远程仓库获取最新版本并合并到本地。
首先会执行 git fetch,然后执行 git merge,把获取的分支的 HEAD 合并到当前分支。
从远程仓库获取最新版本。
git pull
git push
把本地仓库的提交推送到远程仓库。
把本地仓库的分支推送到远程仓库的指定分支
git push
远程仓库的别名
本地分支名
:远程分支名
将指定的标签提交到远程仓库
git push
远程仓库的别名
标签名称
将本地所有的标签全部提交到远程仓库
git push
远程仓库的别名
–tags删除指定的远程仓库的分支
git push
远程仓库的别名
:远程分支名
git push
远程仓库的别名
--delete远程分支名
git clone
只拉取最近的一个 revision git clone --depth=1
拉取指定分支 git clone -b dev
只克隆一个裸仓库 git clone --bare **.git
git branch
操作 Git 的分支命令。
列出本地的所有分支,当前所在分支以 "*" 标出
git branch
列出本地的所有分支并显示最后一次提交,当前所在分支以 "*" 标出
git branch -v
创建新分支,新的分支基于上一次提交建立
git branch
分支名
修改分支名称
如果不指定原分支名称则为当前所在分支
git branch -m
原分支名称
新的分支名称
强制修改分支名称
git branch -M
原分支名称
新的分支名称
删除指定的本地分支
git branch -d
分支名称
强制删除指定的本地分支
git branch -D
分支名称
git checkout
检出命令,用于创建、切换分支等。
切换到已存在的指定分支
git checkout
分支名称
创建并切换到指定的分支,保留所有的提交记录
等同于 "git branch" 和 "git checkout" 两个命令合并
git checkout -b
分支名称
创建并切换到指定的分支,删除所有的提交记录
git checkout --orphan
分支名称
替换掉本地的改动,新增的文件和已经添加到暂存区的内容不受影响
git checkout
文件路径
git fetch
从远程仓库获取最新的版本到本地的 tmp 分支上。
将远程仓库所有分支的最新版本全部取回到本地
git fetch
远程仓库的别名
将远程仓库指定分支的最新版本取回到本地
git fetch
远程主机名
分支名
git diff
比较版本之间的差异。
比较当前文件和暂存区中文件的差异,显示没有暂存起来的更改
git diff
比较暂存区中的文件和上次提交时的差异
git diff --cached
git diff --staged
比较当前文件和上次提交时的差异
git diff HEAD
查看从指定的版本之后改动的内容
git diff
commit ID
比较两个分支之间的差异
git diff
分支名称
分支名称