git常用命令总结
git是一个开源的分布式控制系统,能够处理多个版本项目,在各个版本库之间进行代码的更新等操作。
Workspace:工作区
Staging area:暂存区
local resopitory:本地仓库
remote repository:远程仓库
可以通过不同的git命令对这些项目仓库进行操作。常用的git命令总结如下:
git init
初始化一个空仓库
可以用ls –a查看这个隐藏的.git目录
git clone
将远端仓库代码clone至本地
git clone git仓库链接
git status
git status查看当前仓库的状态,有没有修改的文件
git status –s 以精简的方式输出文件修改状态,??表示还未添加至缓存区,A表示已添加到缓存区,AM表示文件在添加到缓存区后又有修改,MA表示文件被修改后放到了缓存区
git log/blame
查看历史提交记录
git log 查看当前状态下的commit信息
git log –-oneline 简洁方式查看当前分支的提交情况
git log –-graph 以分支树的方式查看历史分支和合并情况
git log --reverse –oneline 以逆向时间顺序显示历史记录
git log --author=Linus –oneline 查找指定用户的提交记录
git log --oneline --before={2022-01-20} --after={2022-01-19} --no-merges 查找特定时间的提交记录,–no-merges排除掉已经merge的提交
git log --grep=keywords 根据commit信息过滤log
git blame file 查看某个文件的提交记录
git reflog
git reflog 可以查看所有分支的操作记录,包括已经删除的reset和commit记录
git add
git add file 添加文件到缓存区
git add dir 添加目录到缓存区
git add . 把当前目录下所有文件添加到缓存区
git diff
git diff file 显示缓存区和工作区文件的差异
git diff --cached file 显示暂存区和上一次提交(commit)的差异:
git diff HEAD 显示工作区和上一次提交的差异
git diff branch1 branch2 比较两个分支的差异
git commit
git commit可以将本地修改的内容提交到本地仓库中
git commit -m “提交日志”
git commit --amend –m “修正提交日志”
git commit filename1 filename2 –m “提交日志”
git commit –a 不需要先执行git add命令,可以直接提交
git reset
回退版本
git reset HEAD 把已添加到缓存区的文件取出来,下次提交不包含这些文件,HEAD^ 表示回退到上一个版本,HEAD^^ 表示上上一个版本…
git reset HEAD filename 把某个文件从缓存区中取出来不提交,如果下次需要提交这个文件,可以使用git commit –am ‘message’来提交
git reset –soft HEAD 回退到某个版本
git reset –hard HEAD撤销工作区中所有未提交的修改内容,将缓存区与工作区都回到上一次版本
git revert
git revert HEAD 撤销最近的一次提交
git rm
删除文件
git rm filename 从缓存区和工作区中删除文件
git rm –f filename 强制从缓存区和工作区中删除文件
git rm –cached filename 从缓存区中删除文件,但在工作区中保留该文件
git rm –r * 递归删除当前目录下的子目录和文件
git mv
git mv file newfile 移动或者重命名一个文件
git mv –f file newfile 强制移动或重命名一个文件
git clean
git clean –df 从工作目录中删除没有track的文件,-d表示同时移除目录,-f表示强制删除
git stash
git stash 把当前目录的改动压入一个栈
git stash list 显示栈列表
git stash apply 把栈中的改动取出来并应用与当前工作目录
git stash drop 删除上一个栈
git stash clear 清空所有栈
git branch
创建、删除或列出分支。
git branch 展示本地分支
git branch –r 展示远端所有分支
git branch –a 展示所有本地分支和远端分支
git branch branch_name 创建新分支但仍停留在当前分支
git branch -d branchname 删除本地分支,需要注意的是,如果要删除某个分支,那么当前不能在这个分支上,否则会导致删除失败
切换至其它分支后再删除:
如果要删除的分支有未合并的代码会导致删除失败,这时候可以强制删除:
git branch –D branchname 强制删除分支
git checkout
1、 切换本地仓库分支。git clone默认拉取的是master分支,可以用如下命令在本地创建并切换到这个新的分支:
git checkout -b|-B 本地分支名 [-–track] origin/远端分支名
例如:git checkout -b Develop --track origin/Develop
git checkout本地分支名 切换到指定分支
git checkout – 切换到上一个分支
git remote
git remote –v 展示远端仓库信息
git remote show remote 展示某个远程仓库的信息
git remote add remote url 添加远程仓库
git remote rm remote 删除远程仓库
git remote rename oldname newname 重命名远程仓库
git remote set-url remote url 更新远程仓库的url
git fetch
git fetch alias 获取远程分支数据,执行完该命令后可以执行git merge把远程分支合并到当前分支
git merge
git merge alias/branch 把一个分支merge到当前分支
git pull
git pull等价于fetch + merge FETCH_HEAD,把远端分支拉取下来并与本地分支合并
git pull remote remote : local 从远端分支获取代码至本地
git push
git push local local : remote把本地分支版本推送到远程分支合并
git push –-force personal remote如果本地分支和远端分支有冲突,可以用—force参数强制推送
git push personal –delete remote删除远程仓库的分支
git tag
git tag –a v1.0 c86ce47db4 给某次提交打上v1.0的标签,-a会在输入这个命令后允许你添加标签信息。