git提交流程
工作区 <-> 暂存区 <-> 本地仓库 <-> 远程仓库
-
git add
$git add <file> 【添加文件到暂存区】 $git add <path> 【添加文件夹下所有文件到暂存区】 $git add. 【当前目录下所有新增、修改的文件添加到暂存区,不包含删除的文件】 $git add -u 【把当前目录下所有删除、修改的文件添加到暂存区,不包括新增的文件】 $git add -A 【把当前目录下所有删除、新增、修改的文件添加到暂存区】 -
git commit
$git commit -m "information" $git commit 【弹出vi窗口,输入信息后退出】 $git commit -a -m "infomation" 【直接提交到本地仓库】 $git commit --amend 【保持ChangeId不变提交】 -
git status
$git status untracked file 【工作区文件,处于未跟踪状态】 changes to be commited 【已跟踪但未提交,处于暂存区】 changes not staged for commit 【已跟踪的内容文件发生了变化】 -
git reset
$git reset HEAD^ 【回退所有内容到上一个版本,改动部分放到工作区】 $git reset HEAD <file> 【取消暂存<file>文件,改动部分放到工作区】 $git reset HEAD^ <file> 【回退文件到上一个版本,改动部分放到工作区】 $git reset --soft HEAD^ 【回退所有内容到上一个版本,改动部分放到暂存区】 $git reset --hard HEAD^ 【回退所有内容到上一个版本,改动部分删除】 $git reset --hard HEAD~1 【撤销最近一次commit,回退到上一个版本】 $git reset --hard HEAD~10 【撤销最近十次commit,回退到上一个版本】 $git reset --hard <commit_id> 【回退到版本commit_id】 -
git diff
$git diff 【工作区与暂存区比较】 $git diff --staged(cached) 【查看已暂存的内容】 $git diff HEAD 【工作区和HEAD的比较】 $git diff <commit_id1> <commit_id2> 【commit_id1和commit_id2版本的差异】 $git diff <commit_id1>:<file> <commit_id2>:<file> 【commit_id1和commit_id2版本<file>的差异】 -
git log
$git log 【查看提交历史】 $git log -p -2 【查看最近两次提交的log】 $git log <file> 【显示<file>的log】 $git log --stat 【显示提交历史的统计信息】 $git log --author=A 【显示A作者的提交】 $git reflog 【查看提交历史,包括已删除的commit的记录】 -
git branch
$git branch -a 【显示所有分支】 $git branch <branch> 【新建本地分支branch,但不切换到该分支】 $git checkout <branch> 【切换到本地分支branch】 $git checkout origin/<branch> 【切换到远程分支branch】 $git checkout -b <branch> 【新建本地分支branch并切换到该分支】 $git checkout -b <branch> origin/<branch> 【新建本地分支并追踪远程分支】 $git push origin/<branch> 【把本地分支提交到远程】 $git merge origin/master 【把master分支merge到当前所在的分支】 $git branch -d <branch> 【删除分支branch】 $git branch -D <branch> 【强制删除分支branch】 $git branch --merged 【查看那些分支已经合并到了当前分支】 $git branch --no--merged 【查看所有包含的未合并工作的分支】 $git branch -v 【列出所有分支的最后一次提交】 $git branch -av 【列出所有远程及本地分支以及追踪关系】 $git branch -vv 【列出所有本地分支及其远程追踪分支】 -
git push
$git push origin HEAD:refs/for/<branch> 将当前分支推送到远程<branch>分支并需要审核
$git push origin HEAD:<branch> 将当前分支推送到远程<branch>分支,无需审核,但需要权限
$git push origin <branch> 将当前分支推送到远程<branch>分支,无需审核
$git push origin test:master 将本地test分支推送到远程master分支上。
- git rm
$git rm 【从工作区以及暂存区删除】
$git rm <file> 【从工作区以及暂存区删除file文件】
- git pull
$git pull origin <branch> 【拉取远程仓库更新并与本地进行合并】
$git pull origin <branch>:master 【拉取远程仓库的<branch>分支,并与本地master分支合并】
- git stash
含义参考廖雪峰官网的Bug分支,
$git stash list 【查看隐藏的工作现场】
$git stash drop 【删除最新一条stash列表内容】
$git stash apply 【恢复工作现场,但不删除stash列表内容】
$git stash pop 【恢复工作现场的同时删除stash列表内容】
-
git tag
$git tag 【显示所有的tag】 $git checkout <tag> 【提取tag对应的代码】 $git tag -a V1.4 【打tag V1.4】 $git show <tag> 【显示指定的tag】 $git push origin <tag> 【推送tag到远程仓库】 $git push origin --tags 【一次性推送所有的tag】 -
回退到某个日期的版本
git checkoutgit rev-list --all -n1 --before="2018-03-01"
如果是repo的话,则使用repo forall -c 'git checkoutgit rev-list --all -n1 --before="2018-03-01"' -
repo forall -c 'commitID=
git log --before "2017-03-17 07:00" -1 --pretty=format:"%H"; git reset --hard $commitID'