2021-03-02

git常用命令

整理了一些git的常用命令,随查随用,需要具体说明的可自行百度。

配置提交记录中的用户信息

git config --global user.name <用户名>
git config --global user.email<邮箱地址>//--local:仓库级,--global:全局级,--system:系统级
git config --list //列出配置

克隆远程仓库

git clone <远程仓库的网址>
git clone <远程仓库的网址> <本地目录>
git clone <远程仓库的网址> -b <分支名称> <本地目录>

操作远程库

git remote //列出已经存在的远程仓库
git remote -v //列出远程仓库的详细信息,在别名后面列出URL地址
git remote add <远程仓库别名> <远程仓库URL地址> //添加远程仓库
git remote rename <远程仓库的别名> <新的别名> //修改远程仓库的别名
git reomte remove <远程仓库的别名> //删除指定名称的远程仓库
git remote set-url <远程仓库的别名> <新的远程仓库URL地址> //修改远程仓库的URL地址

初始化

git init

提交修改到仓库

git add <文件路径> //把指定的文件添加到暂存区
git add -u [<文件路径>] //添加所有修改,已删除的文件到暂存区
git add -A [<文件路径>] //添加所有修改,已删除,新增的文件到暂存区
git commit -m <message> //提交修改

查看状态

git status
git status -s //以简短模式查看本地仓库的状态-会显示两列,第一列是文件的状态,第二列是对应的文件
                文件状态:A 新增,M 修改,D 删除,?? 未添加到Git中

版本回退

git log //提交历史
git log --graph //分支合并图    
git reflog //命令历史
git reset --hard head //回退到上次提交的状态,即撤销暂存区和工作区相对于当前版本的修改    
git reset --hard head^ //回退到上一个版本,包括版本库,暂存区,工作区
git reset --hard head^^ //回退到上上一个版本
git reset --hard head~n //回退到前n个版本
git reset --hard commit_id //回退版本库,暂存区,工作区到指定版本    
git reset [--mixed] commit_id //回退版本库,暂存区到指定版本,如果commit_id取head的话即只回退暂存区    
git reset --soft commit_id //回退版本库    
git reset [file] [head]//撤销暂存区的修改,工作区不受影响,即git reset --mixed head回退暂存区   
git checkout -- file //丢弃工作区对file文件的修改
/*总结:
  soft: 重置git commit,仅仅回退版本库
  mixed: 重置git commit和git add,回退版本库,暂存区
  hard: 重置git commit和git add和工作区的修改,回退版本库,暂存区,工作区

操作分支

git branch //列出本地所有分支
git branch -v //列出所有本地分支,并显示最后一次提交信息
git branch <分支名> //创建新的分支
git branch -m [<原分支名称>] <新分支名称> //修改分支名称
git branch -d <分支名称> //删除分支
git branch -D <分支名称> //强制删除分支
git branch -vv //查看本地分支以及追踪的远程分支
git branch -a //查看包括本地分支和追踪的远程分支在内的所有分支
git branch -r //查看追踪的远程分支
git branch --set-upstream-to=<远程库别名>/<远程分支名> <本地分支名> //设置追踪关系
git checkout <分支名称> //切换到已存在的指定分支
git checkout -b <分支名称> //git branch+git checkout,创建并切换分支

拉取分支

git fetch //拉取唯一的远程仓库所有分支的最新版本到本地
git fetch <远程仓库别名> //拉取指定的远程仓库所有分支的最新版本到本地
git fetch <远程仓库别名> <分支名> //将远程仓库指定分支的最新版本取回到本地

合并分支

git merge

拉取修改

git pull <远程仓库别名> <远程分支名>:<本地分支名> //合并远程分支到本地分支,等于git fetch+git merge
git pull <远程仓库别名> <远程分支名> //远程分支与当前分支合并
git pull <远程仓库别名> //当前分支与远程分支存在追踪关系
git pull //当前分支只有一个追踪分支
git pull -p //拉取分支时如果远程分支已经删除,会相应删除本地分支    

推送修改

git push <远程仓库别名> <本地分支名>:<远程分支名> //推送本地分支到远程分支
git push <远程仓库别名> <本地分支名> //推送本地分支到与之存在追踪关系的远程分支,若远程分支不存在则创建
git push <远程仓库别名> :<远程分支名> //省略了本地分支名,等于删除远程分支,因为推送了一个空分支
git push <远程仓库别名> //当前分支与远程分支存在追踪关系,则本地分支和远程分支都可省略
git push //当前分支只有一个追踪分支
git push -all <远程仓库别名> //将所有本地分支都推送到远程主机
git push --force <远程仓库别名> //强制推送修改到远程主机,远程主机更新的版本会被覆盖    

比较版本差异

git diff //比较当前文件和暂存区之间的差异
git diff --cached //比较暂存区的文件和上次提交时的差异    
git diff HEAD //比较当前文件和当前分支的差异
git diff <分支名称> //比较当前文件和指定分支的差异    
git diff <commit ID>//比较当前文件和指定版本的差异
git diff <分支名称> <分支名称> //比较两个分支之间的差异    

删除文件

git rm file //当我们需要删除暂存区或分支上的文件, 同时工作区也不需要这个文件了,使用git commit提交修改
git checkout -- file //先手动删除文件,之后使用此命令可以恢复文件,若不恢复则使用git rm和git commit删除文件提交修改
git rm --cached file //当我们需要删除暂存区或分支上的文件, 但本地又需要使用, 只是不希望这个文件被版本控制
    

储藏

git stash //将所有未提交的修改(工作区和暂存区)保存至堆栈中,之后恢复时相当于将暂存区的修改和工作区的修改都放在工作区中,暂存区则保持与当前版本一致
git stash save <注释> //添加注释的stash,方便标记每次stash的信息
git stash list //查看当前所有的stash
git stash pop //将当前(最近的)stash中的内容弹出,并应用到当前工作区中,和堆栈一样,后stash的先弹出
git stash apply [stash版本] //将堆栈中的指定版本的stash应用到当前工作区而不会删除stash,默认应用最近的版本
git stash drop [stash版本] //删除指定的stash
git stash clear //清除堆栈中的所有内容
git stash show [stash版本] [-p]//查看stash与当前目录的差异,-p可以查看详细的不同
git stash branch //从最新的stash创建分支

注意:一个repo只有一个工作区和暂存区,但是有多个分支对应的提交区,工作区的一个修改只能提交给一个分支。

举例说明

从dev分支切换出test分支进行修改,如果test分支修改了工作区没有提交就切换回dev分支,则可能工作区的修改也一并被带过来了,或者发生冲突提示可能被覆盖,但是如果你提交了这个修改给test分支,那么切换到dev分支时工作区就是干净的,也就是显示的是dev分支的内容。所以官方建议切换分支时最好保持一个干净的工作区,如果test作的修改不想要了,可以先提交修改到test分支上,再切换回来dev分支后删除test分支,这样就可以保证工作区是干净的。如果不想提交修改到test分支上,也可以使用git stash先将修改存起来再切换到dev分支上,最后等切换回test分支后再pop出修改即可。

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页