GIt使用

Git是什么?

Git是一款分布式版本控制系统

工作流程/原理

image.png

  • Workspace: 工作区

改动(增删文件和内容)

  • Index / Stage: 暂存区

输入命令:git add 改动的文件名,此次修改就放入暂存区

  • Repository: 仓库区/本地仓库

输入命令:git commit 此次修改的描述,此次改动就放到了本地仓库,每个commit,可以称作为一个版本

  • Remote: 远程仓库

输入命令git push 远程仓库,此次改动就放到了远程仓库

Git与SVN的主要区别

  1. Git是分布式版本控制系统,SVN是集中式版本控制系统
  2. Git没有中央服务器,每个人的电脑都是一个完整的版本库;SVN版本库集中放在中央仓库,每个人需要从仓库拉取最新代码之后进行工作。集中式版本控制系统是必须联网才能工作

git常用命令

展示帮助信息

git help -g
复制代码

image.png

回到远程仓库状态

摒弃本地所有修改,回到远程仓库状态。

  • 第一步
git fetch --all
复制代码
  • 第二步
git feset --hard origin/master
复制代码

image.png

重设第一个commit

也就是把所有改动都重新放入工作区,并清空所有commit,这样就可以重新提交第一个commit

git update-ref -d HEAD
复制代码

查看冲突文件

展示所有工作区的冲突文件列表

git diff --name-only --diff-filter=U
复制代码

image.png

展示工作区与暂存区的不同

输出工作区和暂存区不同

git diff
复制代码

展示本地仓库任意两个commit之间的文件变动

git diff <commit -id> <commit -id>
复制代码

展示暂存区、工作区和最近版本的不同

输出工作区、暂存区 和本地近的版本 (commit) 的 different (不同)。

git diff HEAD
复制代码

快速切换到上一个分支

git checkout -
复制代码

删除已经合并到master的分支

windows电脑不可用

git branch --merged |grep -v `^\*\| master` | xargs -n 1 git branch -d
复制代码

展示本地分支关联远程仓库的情况

git branch -vv
复制代码

image.png

关联远程分支

git branch -u origin/mybranch
复制代码

或者在push时加上-u参数

git push origin/mybranch -u
复制代码

列出所有分支

git branch -r
复制代码

image.png

列出本地和远程分支

git branch -a
复制代码

image.png

查看远程分支和本地分支的对应关系

git remote show origin
复制代码

image.png

远程删除分支,本地也想删除

git remote prune origin
复制代码

image.png

创建并切换到本地分支

一般是从master上创建

git checkout -b <branch-name>
复制代码

从远程分支中创建并切换到本地分支

git checkout -b <branch-name> origin/<branch-name>
复制代码

删除本地分支

git branch -d <local-branch-name>
复制代码

删除远程分支

git push origin --delete <remote-branch-name>
复制代码

或者

git push origin :<remote-branch-name>
复制代码

重新命名本地分支

git branch -m <new-branch-name>
复制代码

查看标签

git tag
复制代码

image.png

展示当前分支的最近的tag

git describe --tags --abbrev=0
复制代码

image.png

查看标签详细信息

git tag -ln
复制代码

image.png

本地创建标签

git tag <version-number>
复制代码

默认tag是打在最近的一次commit上,如果需要指定commit打tag:

git tag -a <version-number> -m "v1.0 发布(描述)" <commit-id>
复制代码

推送标签到远程仓库

git push origin <local-version-number>
复制代码

一次性推送所有标签,同步到远程仓库

git push origin --tags
复制代码

删除本地tag

git tag -d <tag-name>
复制代码

删除远程tag

git push origin --delete tag <tag-name>
复制代码

切回到某个标签

一般用于线上出问题时候回归

git checkout -b <branch_name> <tag_name>
复制代码

放弃工作区修改

git checkout <file-name>
复制代码

放弃工作区所有修改

git checkout .
复制代码

回到某个 commit 的状态,并删除后面的 commit

revert 的区别:reset 命令会抹去某个 commit id 之后的所有 commit

#默认就是-mixed参数。
git reset <commit-id>  
#回退至上个版本,它将重置HEAD到另外一个commit,并且重置暂存区以便 和HEAD相匹配,但是也到此为止。工作区不会被更改。
git reset --mixed HEAD^  
#回退至三个版本之前,只回退了commit的信息,暂存区和工作区与回退之 前保持一致。如果还要提交,直接commit即可 
git reset --soft HEAD~3  
#彻底回退到指定commit-id的状态,暂存区和工作区也会变为指定 commit-id版本的内容
git reset --hard <commit-id> 
复制代码

显示本地更新过 HEAD 的 git 命令记录

每次更新了 HEAD 的 git 命令比如 commit、amend、cherry-pick、reset、revert 等都会被记录下来 (不限分支),就像 shell 的 history 一样。 这样你可以 reset 到任何一次更新了 HEAD 的操作之后,而不仅仅是回到当前分支下的某个 commit 之 后的状态

git reflog
复制代码

image.png

给git命令起别名

git config --global alias.<handle> <command>
复制代码

例如:
将git status改成git ss

git config --global alias.ss status
复制代码

存储当前修改,但不用提交commit

git stash
复制代码

保存当前文件,包括新建的文件

git stash -u
复制代码

展示所有stashes

git stash list
复制代码

image.png

回到某个stash的状态

git stash apply <stash@{n}
复制代码

image.png

回到后一个 stash 的状态,并删除这个 stash

git stash pop
复制代码

删除所有的 stash

git stash clear
复制代码

image.png

展示所有的tracked文件

可提交的文件

git ls-files -t
复制代码

image.png

展示所有的untracked文件

不提交

git ls-files --others
复制代码

image.png

展示所有忽略的文件

git ls-files --others -i --exclude-standard
复制代码

image.png

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享