-
初始化仓库
git init
在当前文件夹中进行初始化git init <dir>
在指定文件夹中进行初始化 -
将文件添加到暂存区
git add <file>..
添加指定的文件,多个文件可以使用空格进行分隔git add .
添加所有的文件 -
将文件提交到版本库
git commit -m <message>
-
重新提交
git commit --amend -m <message>
在发现提交信息写错了或者某些文件忘记添加的情况下使用
-
查看仓库当前的状态
git status
-
查看文件的改动
git diff
比较的是工作区与暂存区的差异
git diff <commitid>
比较工作区与某次提交的差异
git diff [--staged | --cached]
比较暂存区与上一次提交的差异
加了
<commitid>
可以比较与某一个提交的差异 -
版本回退
HEAD
表示当前版本git reset --hard HEAD^
退回到上次提交git reset --hard HEAD^^
退回到上上次提交。依此类推。git reset --hard HEAD~n
退回n
次提交git reset --hard commit-id
退回到指定的commit-id
处reset --hard
会重置工作区与暂存区中的内容。reset --soft
会保留工作区与暂存区中的内容,并把文件之间的差异放进暂存区。reset
不加参数表示默认使用--mixed
,会保留工作区,但是会清空暂存区,并把文件之间的差异放进工作区。 -
查看提交历史
git log
--pretty=online 提交信息只显示一行
--abbrev-commit 显示 commitid 的缩写
-p (--patch 的缩写)显示详细信息
--stat 显示统计信息
-
查看操作历史
git reflog
-
查看当前提交的改动
git show
-
查看任意提交的改动
git show <commitid>
-
丢弃工作区的修改
git checkout -- <file>
-
丢弃暂存区的修改
git reset HEAD <file>
-
删除文件
rm <file>
或者在文件管理器中进行删除,则只是把文件从工作区删除了,但是在暂存区中还存在。使用git checkout -- <file>
可以恢复删除的文件。git rm <file>
表示把文件从工作区与暂存区都删除了。该文件需要被追踪才可以被删除
git rm --cached <file>
从暂存区删除文件。Git 将不会追踪该文件。使用
git reset HEAD <file>
将文件从暂存区恢复。 -
先有本地仓库,后有远程仓库的情况下
先将本地仓库与远程仓库关联起来:
git remote add <shortname:origin><giturl>
默认名字为 origin
再进行推送:
git push -u origin master
或者git push --set-upstream origin <branch>
第一次推送时的操作,后续的推送直接使用
git push
就可以了origin 是对远程仓库的命名。一般为这个,也可以改成其他的名字。
-
从已存在的远程仓库进行克隆
git clone <giturl>
将生成跟远程仓库同名的文件夹
git clone <giturl> <dir>
将仓库放在指定的文件夹中
-
新建分支
git branch <branch>
或git fetch origin :<branch-name>
在当前提交上创建分支
git branch <branch> <commitid>
在指定提交上创建分支
-
切换分支
git checkout <branch>
-
新建并切换分支
git checkout -b <branch>
-
将
HEAD
与当前分支进行分离git checkout --detach
-
将指定分支合并到当前分支
git merge <branch>
-
取消合并
git merge --abort
-
变基
git rebase <commit>
将指定的
commit
之前的提交在当前分支上重新提交一遍。 -
交互式变基
git rebase -i <commit>
可以用来修改或者删除指定的
commit
-
查看分支本地分支
git branch
-r
表示查看远程分支-a
表示查看本地与远程分支 -
删除本地分支
git branch -d <branch>
在没有
push
的情况下 (做了add
或者commit
操作),不能进行删除,但是可以强制删除。 -
强行删除本地分支
git branch -D <branch>
-
删除远程分支
git push origin :<branch-name>
或git push orign -d <branch-name>
-
隐藏文件
git stash
临时隐藏工作区文件的改动。默认情况下,没有被追踪的文件不会被隐藏。
-u
被追踪的文件也隐藏。 -
隐藏文件的时候添加备注信息
git stash save -m <message>
-
隐藏文件的时候隐藏
-
查看隐藏文件列表
git stash list
-
恢复隐藏文件
git stash apply <stash>
恢复之后需要进行手动删除
-
在恢复的同时删除隐藏文件
git stash pop
-
删除某个隐藏文件
git stash drop <stash>
-
清空隐藏的文件
git stash clear
-
将本地分支与远程分支进行关联
git branch --set-upstream-to=origin/<branch> <branch>
-
打标签
git tag <name>
默认对当前的提交打标签
-m
可以对本次标签添加备注信息 -
对某一次提交打标签
git tag <name> <commitid>
-
查看所有的标签
git tag
-n
显示标签的注解信息 -
查看具体的标签
git show <tagname>
-
删除本地标签
git tag -d <tagname>
-
推送标签到远程
git push origin <tagname>
-
推送所有未推送的标签到远程
git push origin --tags
-
删除远程标签
git push origin :refs/tags/<tagname>
或git push origin -d <tagname>
-
撤销本次的更改
git revert <commitid>
会产生一条提交记录
-
撤销连续的更改
git revert begin_commit_id..end_commit_id
git revert -n HEAD~3..
回滚连续3个提交,
..
表示范围,相当于HEAD~3..HEAD
-n, --no-commit don't automatically commit (不会自动commit) -m, --mainline <parent-number> select mainline parent (当需要回滚已merge的代码时,需要被保留下来的父结点,1表示当前分支上的父节点,2表示要合并进来的分支上的父节点)
示例:
撤销
C4
的更改,保留C6
git revert -m 1 HEAD
C6
就是父节点1,C4
就是父节点2 -
更新 Git bash
git update-git-for-windows
-
将某些提交合并到当前分支
git cherry-pick <commitid>...
示例:
-
git cherry-pick commitidA commitB
表示将commitidA与commitidB提交到当前分支
-
git cherry-pick commitidA..commididB
表示将commitidA到commitidB之间的提交,提交到当前分支,但是不包含commitidA
-
git cherry-pick commitidA^..commididB
表示将commitidA到commitidB之间的提交,提交到当前分支,并且包含commitidA
-
-
将指定分支切换到某次提交上
git branch -f <branch> <commitid>
-
清理尚未被追踪的文件
git clean -df
-d
表示移除文件夹-f
表示强制 -
停止追踪远程仓库
git branch --unset-upstream
-
解除远程仓库的关联
git remote remove origin
-
查看远程仓库的信息
git remote
-v
显示仓库对应的 URL -
第一次commit之后想撤销
git update-ref -d HEAD
-
检查某个文件是否被ignore了
git check-ignore -v file-path
示例:
git check-ignore -v src/main/resources/data.txt