git add
git commit -m ""
git commit --allow-empty-message -m ""
git 提交不加备注
# 工作区 >>>> 暂存区 >>>> 仓库
# git add把文件从工作区>>>>暂存区,git commit把文件从暂存区>>>>仓库
git diff
git diff
查看工作区和暂存区差异
git diff --cached
查看暂存区和仓库差异
git diff HEAD
查看工作区和仓库的差异
git diff HEAD -- readme.txt
# 暂存区为空
# 使用git diff:比较的是工作区和仓库,即和使用git diff HEAD结果相同
# 暂存区不为空
# 使用git diff: 比较的是工作区和暂存区
git status
git reset
git reset --hard HEAD^
git reset --hard 740be87
git reset HEAD <file>
# git add的反向命令git checkout,撤销工作区修改,即把暂存区最新版本转移到工作区,
# git commit的反向命令git reset HEAD,就是把仓库最新版本转移到暂存区。
git reflog
每一次命令的历史记录,防止找不到最后一次的提交版本
git checkout
git checkout -- file
命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令,我们在后面的分支管理中会再次遇到git checkout命令。
# git checkout 在工作区的修改全部撤销分两种情况:
# 1、a.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
# 2、a.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
# 总之,就是让文件回到最近一次git commit或git add时的状态。
git rm
git rm a.txt
# 先手动删除文件,然后使用git rm <file>和git add<file>效果是一样的。
# 另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:
# git checkout -- a.txt
git remote
git remote add origin git://url
添加远程库
git remote rm origin
删除远程库
git remote
查看远程库的信息
git remote -v
查看远程库更详细的信息
git push origin master
# origin 通过git remote
获取到的
git checkout -b dev origin/dev
git branch --set-upstream-to=origin/dev dev
# 此处的“删除”其实是解除了本地和远程的绑定关系,并不是物理上删除了远程库。远程库本身并没有任何改动。要真正删除远程库,需要登录到GitHub,在后台页面找到删除按钮再删除。
git push
git push -u origin master
git push origin master
# 由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
git clone
git clone ssh@url:project.git
git branch
git checkout -b newbranch
创建并切换到新分支
git branch newbranch
创建新分支
git branch
创建分支
git branch -a
查看所有分支
git branch -r
查看远程分支
git branch -d newbranch
删除分支
git branch -D newbranch
强制删除分支
git switch
git switch -c newbranch
创建并切换到新分支
git switch master
切换分支
git merge
git merge dev
把dev分支合并到当前分支
git merge --no-ff -m "" dev
强制禁用Fast forward模式,使得从历史分支中看出合并的分支信息
git config branch.master.mergeoptions "--no-ff" 仅针对当前分支有效
git config --add merge.ff false 仅针对当前版本库的所有分支有效
git config --global --add merge.ff false 仅针对所有版本库的所有分支有效
以上命令输入后,即可省略 --no-ff 字段
第一个是针对master分支,以此类推
第二个是针对当前版本库的所有分支
第三个是针对所有版本库的所有分支
$ git log --graph --pretty=oneline --abbrev-commit
* d6560c7 (HEAD -> master) Merge branch 'local'
|\
| * 51afc00 (local) 5 update
| * c39a6bc 4 update
|/
* d614627 update 3
* e976919 (dev) 2 update
* 7fea4b0 1 update
* 2581c67 init
git log
git log --graph
查看分支合并图
git log --graph --pretty=oneline --abbrev-commit
git log --pretty=oneline
git stash
git stash
git stash list
git stash apply
git stash drop
git stash pop
git stash apply stash@{0}
git cherry-pick
git cherry-pick 4c805e2
复制一个特定的提交到当前分支
git rebase
git rebase
本地未push的分叉提交历史整理成直线
git tag
git tag
查看所有tag,标签不是按时间顺序列出,而是按字母排序的
git tag v1.0
打标签,默认标签是打在最新提交的commit上
git tag v0.9 f52c633
给历史提交的commit打标签
git show v0.9
查看标签信息
git tag -a v0.1 -m "version 0.1 released" 1094adb
给标签添加说明文字
git tag -d v0.1
删除标签
git push origin v1.0
推送标签到远程
git push origin --tags
推送所有标签到远程
git tag -d v0.9 && git push origin :refs/tags/v0.9
删除远程分支
git ls-remote --tags origin
查看远程所有标签