最全的git操作命令(持续更新)
当前使用git进行版本管理越来越频繁,但是难免还是有些命令记不全,曾当前闲暇记录一下,免得需要时漫天找寻
- 一、 配置用户信息
- 二、仓库初始化
- 三、仓库管理
- 四、状态管理
- 五、把文件添加到暂存区
- 六、提交
- 七、数据推送
- 八、分支管理
- 九、文件管理
- 十、日志
- 十一、还原与重置
- 1、git checkout [file] 【恢复暂存区的指定文件到工作区】
- 2、git checkout [commit] [file] 【恢复某个commit的指定文件到暂存区和工作区】
- 3、git checkout .【本地所有修改的。没有的提交的,都返回到原来的状态】
- 4、git reset [file]【重置暂存区的指定文件,与上一次commit保持一致,但工作区不变】
- 5、git reset --hard【重置暂存区与工作区,与上一次commit保持一致】
- 6、 git reset [commit]【重置当前分支的指针为指定commit,同时重置暂存区,但工作区保持不变】
- 7、 git reset --hard [commit]【重置当前分支的HEAD为指定commit,同时重置暂存区和工作区】
- 8、git reset --keep [commit]【重置当前HEAD为指定commit,但保持暂存区和工作区不变】
- 9、 git revert [commit]【新建一个commit,用来撤销指定commit】
- 10、git stash【把所有没有提交的修改暂存到stash里面】
- 11、git reset --hard HASH【返回到某个节点,不保留修改】
- 12、git reset --soft HASH【返回到某个节点。保留修改】
- 13、git clean -df【返回到某个节点】
- 14、git reset --hard【删除提交log】
一、 配置用户信息
1、git config 【配置git 用户信息】
配置git 用户信息
# 设置提交代码时的用户信息
$ git config [--global] user.name "用户名"
$ git config [--global] user.email "邮箱地址"
## 如 $ git config [--global] user.name "jack"
## 如 $ git config [--global] user.name "jack@qq.com"
2、git config --list 【查看配置】
查看配置
# 显示当前的Git配置
$ git config --list
3、git config -e【编辑配置】
编辑配置
# 编辑Git配置文件
$ git config -e [--global]
【注】其中 --global 是进行全局配置,如果不指定该参数默认配置到当前目录下
二、仓库初始化
1、git init 【将当前目录初始化为git 代码仓库】
将当前目录初始化为git 代码仓库
$ git init
2、git init [project-name]【新建一个目录,将其初始化为Git代码库】
新建一个目录,将其初始化为Git代码库
$ git init [project-name]
3、 git clone【拷贝一个项目到本地】
拷贝一个项目到本地
$ git clone [url]
如:$ git clone http://192.168.100.235:8000/test/git_test.git
三、仓库管理
1、git remote add origin 【与远程仓库建立连接】
与远程仓库建立连接
$ git remote add [origin] [url]:origin映射远程仓库的别名 url 仓库路径
$ git remote add origin http://192.168.100.235:8000/test/git_test.git
2、git remote rm origin【删除远程连接】
删除远程连接
$ git remote rm origin
3、git remote set-url origin【更换远程仓库地址】
更换远程仓库地址
语法: git remote set-url <origin> <remoteUrl>
$ git remote set-url origin http://192.168.100.235:8000/test/git_test.git
4、git pull 【取回远程仓库的变化,并与本地分支合并】
取回远程仓库的变化,并与本地分支合并
$ git pull [remote] [branch]
如 $ git pull origin dev 将origin 对应的远程dev分支变动合并到本地dev
5、git remote -v【显示所有远程仓库】
显示所有远程仓库
$ git remote -v
四、状态管理
1、git status【查看本地文件变更情况】
查看本地文件变更情况
$ git status
五、把文件添加到暂存区
1、git add . 【将修改和新增文件添加到缓存区】
提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件
$ git add .
2、git add -u 【将修改和被删除文件添加到缓存区】
提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)
$ git add -u
3、git add -A 【将全部改动添加到缓存区】
是上面两个功能的合集(git add --all的缩写)
$ git add -A
六、提交
1、git commit 【提交暂存区到仓库】
提交暂存区到仓库
$ git commit -m "It is first committing."
七、数据推送
1、git push 【推送到远程仓库】
将更改推送到远程仓库
$ git push origin master:dev
这个命令中
origin: 指定远程仓库地址的别名
master:选择推送到远程仓库的本地分支名称
dev:指定推送到远程仓库的分支名称(可以省略,省略后默认和本地分支名相同)
不指定远程分支推送:
指定远程分支推送:
另一种操作:创建一个新的分支,并将其推送到远程仓库
1、$ git branch -b dev
2、 $ git push --set-upstream origin dev
2、git tag 【打标签】
1、为当前版本打一个标签
git tag <tag name>
## git tag <tag name>
$ git tag v1.0.0
2、推送单个tag到仓库
git push origin <tag name>
## git push origin <tag name>
$ git push origin v1.0.0
3、推送所有tag 到仓库
git push --tags
git push origin --tags
$ git push origin --tags
4、展示所有tag
git tag
## git tag
$ git tag
5、搜索tag
git tag -l 'v1.0.*'
## git tag -l 'v1.0.*'
$ git tag -l 'v1.0.*'
3、git tag -d [tag ]【删除标签】
当需要删除某个tag 时可以执行
git tag -d [tag ]
如我想删除原本的 v1.0.0
$ git tag
v1.0.0
## git tag -d [tag ]
$ git tag -d v1.0.0
Deleted tag 'v1.0.0' (was 0bcb84e)
$ git push origin :v1.0.0
To github.com:dengxiaoning/***.git
- [deleted] v1.0.0
$ git tag
看删除成功,再次查看就没有了
八、分支管理
1、git branch 【查看分支】
查看分支
$ git branch [-a]
2、git branch branchName 【创建分支】
创建分支
$ git branch branchName
3、git checkout 【切换分支】
切换分支
$ git checkout branchName
4、git checkout –b【创建+切换分支】
创建+切换分支
$ git checkout –b branchName
【 –b 】参数表示创建并切换,相当于如下2条命令
git branch branchName, git checkout branchName
5、git merge dev【合并某分支到当前分支】
合并某分支到当前分支
# 切换到Master分支
git checkout master
# 将dev合并到当前的master分支上来
git merge dev --no-ff
注意:合并一个没有关联的分支可能会提示fatal: refusing to merge unrelated histories
如:欲将master合并到main分支
Lenovo@LAPTOP-UBL4APLU MINGW64 /d/learnReact/admin-v2-fe (main)
$ git merge master
fatal: refusing to merge unrelated histories
这时可以在合并是增加一个参数--allow-unrelated-histories
如:
Lenovo@LAPTOP-UBL4APLU MINGW64 /d/learnReact/admin-v2-fe (main)
$ git merge master --allow-unrelated-histories
6、git branch –d 【删除(本地)分支】
删除(本地)分支
$ git branch –d branchName
7、git push origin --delete【删除(远程)分支】
删除(远程)分支
## origin:远程仓库别名 remoteBranch:远程分支名
$ git push origin --delete remoteBranch

8、git branch -m 【本地分支重命名】
本地分支重命名
## master :旧的本地分支名称 newbranchname:新的本地分支名
$ git branch -m master newbranchname
九、文件管理
1、git diff 【比较修改文件的不同点】
比较修改文件的不同点
$ git diff modifyFileName
注意:diff 后面需要全路径
如
### 查看当前修改状态
$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: src/App.vue
modified: src/components/HelloWorld.vue
modified: src/components/cesium_main.vue
no changes added to commit (use "git add" and/or "git commit -a")
Lenovo@LAPTOP-UBL4APLU MINGW64 /d/learnVUE/vue-join-cesium (master)
### 比较一下src/components/cesium_main.vue文件的差异
$ git diff src/components/cesium_main.vue
diff --git a/src/components/cesium_main.vue b/src/components/cesium_main.vue
index dfa97a4..21c434b 100644
--- a/src/components/cesium_main.vue
+++ b/src/components/cesium_main.vue
@@ -66,7 +66,7 @@
// var lonIncrement = 0.00025;
var initialLon = 103.33;
var lat = 30.06;
- var height = 857;
+ var height = 17096;^M
2、git rm -r 【删除远程仓库文件】
删除远程仓库文件
只删除远程仓库里的文件,保留本地缓存文件
## 1.执行删除
$ git rm test.txt (删除文件)
## -r 是递归的意思 当最后面是文件夹的时候有用
$ git rm -r test (删除文件夹)
## 2.提交修改
$ git commit -m "Delete some files."
## 3.将修改提交到远程仓库的xxx分支:
$ git push origin xxx
十、日志
1、git log 【查看commit日志】
查看提交日志
$ git log
十一、还原与重置
1、git checkout [file] 【恢复暂存区的指定文件到工作区】
恢复暂存区的指定文件到工作区
# 恢复暂存区的指定文件到工作区
$ git checkout [file]
2、git checkout [commit] [file] 【恢复某个commit的指定文件到暂存区和工作区】
恢复某个commit的指定文件到暂存区和工作区
$ git checkout [commit] [file]
3、git checkout .【本地所有修改的。没有的提交的,都返回到原来的状态】
本地所有修改的。没有的提交的,都返回到原来的状态【注意最后有个点】
$ git checkout .
4、git reset [file]【重置暂存区的指定文件,与上一次commit保持一致,但工作区不变】
重置暂存区的指定文件,与上一次commit保持一致,但工作区不变
$ git reset [file]
如:
看我已将将两个有修改的文件提交到了缓存区

当再次执行$ git reset cesium_index.html 将会把该文件恢复到未add状态
执行一下reset
$ git reset cesium_index.html
Unstaged changes after reset:
M cesium_index.html
再检测下当前文件status

看已经将一个文件恢复到了未提交状态
5、git reset --hard【重置暂存区与工作区,与上一次commit保持一致】
重置暂存区与工作区,与上一次commit保持一致
$ git reset --hard
6、 git reset [commit]【重置当前分支的指针为指定commit,同时重置暂存区,但工作区保持不变】
重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变(就是将当前git add -A提交到缓存区的文件还原为
没有git add 状态, 可以再次执行git add 和git commit 但是你ide中修改的内容依然保持你当前修改的状态)
$ git reset [commit]

如 将当前commit 缓冲区还原到 6791a964097f676ee603eb512ed7c96a5e9fd35c 这次提交

还原后

使用git status 查看,这是文件都处于修改,而未被 git add 加入缓冲区时的状态了
7、 git reset --hard [commit]【重置当前分支的HEAD为指定commit,同时重置暂存区和工作区】
重置当前分支的HEAD为指定commit,同时重置【暂存区】和【工作区】,与指定commit一致
$ git reset --hard [commit]
如
$ git reset --hard a3cd9d264a2ab609a69637365ebd327757e4364a
8、git reset --keep [commit]【重置当前HEAD为指定commit,但保持暂存区和工作区不变】
重置当前HEAD为指定commit,但保持暂存区和工作区不变
$ git reset --keep [commit]
如
$ git reset --keep a3cd9d264a2ab609a69637365ebd327757e4364a
9、 git revert [commit]【新建一个commit,用来撤销指定commit】
新建一个commit,用来撤销指定commit
后者的所有 变化都将被前者抵消,并且应用到当前分支
$ git revert [commit]
如
$ git revert a3cd9d264a2ab609a69637365ebd327757e4364a
10、git stash【把所有没有提交的修改暂存到stash里面】
把所有没有提交的修改暂存到stash里面。可用git stash pop恢复
$ git stash
example:
1、保存当前工作进度,会把暂存区和工作区的改动保存起来。执行完这个命令后,在运行git status命令(这里可以使用save添加一个标识),就会发现当前是一个干净的工作区,没有任何改动。
$ git stash save 'cache-change'
Saved working directory and index state On dev: cache-change
2、查看一下
$ git stash list
stash@{0}: On dev: cache-change
3、查看当前工作区的改动情况
$ git status
On branch dev
nothing to commit, working tree clean
4、查看堆栈中最新保存的stash和当前目录的差异。
$ git stash show
.env.development | 8 +-
.eslintrc.js | 13 +---
src/api/patient.js | 88 +++++++++++-----------
src/components/TimeoutLock/custPwdInput.vue | 10 +--
src/router/index.js | 42 +++++------
.../patient/inHospital/components/EmrRecord.vue | 42 +++--------
.../fullDayRecover/recoverList/partPanel.vue | 2 +-
src/views/patient/inHospital/index.vue | 3 +-
src/views/patient/outpatient/index.vue | 3 +-
9 files changed, 94 insertions(+), 117 deletions(-)
5、将stash 合并到当前工作区
$ git stash pop
On branch dev
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.development
modified: .eslintrc.js
modified: src/api/patient.js
modified: src/components/TimeoutLock/custPwdInput.vue
modified: src/router/index.js
modified: src/views/patient/inHospital/components/EmrRecord.vue
modified: src/views/patient/inHospital/index.vue
modified: src/views/patient/outpatient/index.vue
no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (692af9f593ae972b2d2837bbe03f1550a9e0ae9d)
如下为恢复指定的进度到工作区。stash_id是通过git stash list命令得到的。
如:
$ git stash pop stash@{0}
再查看一下stash
$ git stash list
再查看一下当前工作区
$ git status
On branch dev
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.development
modified: .eslintrc.js
modified: src/api/patient.js
modified: src/components/TimeoutLock/custPwdInput.vue
modified: src/router/index.js
modified: src/views/patient/inHospital/components/EmrRecord.vue
modified: src/views/patient/inHospital/index.vue
modified: src/views/patient/outpatient/index.vue
no changes added to commit (use "git add" and/or "git commit -a")
ok还原到当前工作区成功了
注意:通过git stash pop命令恢复进度后,会删除当前进度 可以使用 git stash apply [–index] [stash_id]
将堆栈中的内容应用到当前目录,不同于git stash pop,该命令不会将内容从堆栈中删除,也就说该命令能够将堆栈的内容多次应用到工作目录中,适应于多个分支的情况。
11、git reset --hard HASH【返回到某个节点,不保留修改】
返回到某个节点,不保留修改。
$ git reset --hard HASH
12、git reset --soft HASH【返回到某个节点。保留修改】
返回到某个节点。保留修改
$ git reset --soft HASH
13、git clean -df【返回到某个节点】
返回到某个节点
$ git clean -df
参数配置
-n显示 将要 删除的 文件 和 目录
-f 删除 文件
-df 删除 文件 和 目录
如 查看日志为
$ git log
commit c81325c83f4575ba6f09e52c8e664eedfbf37f39 (origin/master)
Author: dxn <123456@qq.com>
Date: Sun Aug 4 21:41:53 2019 +0800
commit f9be161a95963251f94f56244f476d3d49d44a40
Author: dex <123456@qq.com>
Date: Sun Jul 28 08:10:41 2019 +0800
commit 8ac8418ba5e959b8cd6ff2af8a5dc493524e957e
Author: dex <123456@qq.com>
Date: Wed Jul 24 21:40:39 2019 +0800
那要返到f9be161a95963251f94f56244f476d3d49d44a40这次提交
直接执行 $ git reset --hard f9be161a95963251f94f56244f476d3d49d44a40 即可
其实代码还原别小看在某些时候蛮管用,如你的代码和和远程仓库冲突时
你也许会使用
$ git pull origin master --allow-unrelated-histories
参数--allow-unrelated-histories 把两段不相干的 分支进行强行合并
但是会出现许多冲突,所以最后还是使用如下命令把HEAD恢复到最后提交的版本
$ git reset --hard origin/master
14、git reset --hard【删除提交log】
可能有的的时候一不小心把一些敏感的信息提交到了GitHub,想着直接删除然后再次提交就可以了,错了不管怎么修改提交,原本的历史提交记录里面都能看到你原来的信息,那这种就得想办法删除掉提交的log日志了,
1)使用git log 查看你提交的log
找到在提交敏感信息前一次提交的commit

如我提交敏感信息之前的一条是commit 3dd59032d8a21ce94532bf2e768bc027fec0d119 那我就可以直接重置到这条提交记录.....
注意:这个reset 会把所有修改都重置会那次提交前的样子,所以你需要将数据拷贝一份放到一边,等重置完成后再用备份的数据覆盖还原的数据,再删除掉敏感数据,这样确保数据和最后一次提交一致,只是删除了不该提交的敏感数据
2)开始还原
$ git reset --hard 3dd59032d8a21ce94532bf2e768bc027fec0d119
HEAD is now at 3dd5903 Merge branch 'master' of github.com:dengxiaoning/***
3)然后在将记录强推到仓库(再次提醒备份了再推,不然数据找不回来)
$ git push origin HEAD --force
Total 0 (delta 0), reused 0 (delta 0)
To github.com:dengxiaoning/
+ 2c3e1d1...3dd5903 HEAD -> master (forced update)
4) 好了远程仓库还原成功了,现在用备份数据覆盖当前还原的数据,再删除敏感数据再次提交
git add -A
git commit -m "删除敏感数据"
git push origin master
ok操作完成,仓库中已经找不到那条带有敏感数据的提交痕迹了
好了大致就这些,谢谢浏览欢迎点赞,分享和关注谢谢
最全的git操作命令(持续更新)的更多相关文章
- git基本操作---持续更新(2017-08-11)
git 强制push $ git push -u origin master -f 查看本地标签 $ git tag 打标签并添加备注 $ git tag 20170811 -m"图片保存多 ...
- 【笔记】git 的常用操作命令(持续更新。。。)
项目正在如火如荼的开展,代码量的繁多不得不令我们运用 git 这个有用的工具去管理我们共同协作的代码 git 在这里不作什么介绍了,百度一大堆的教程 首推廖雪峰老师的:http://www.liaox ...
- 开发常用Git/Linux/idea命令快捷键总结(持续更新)
在开发过程中,会使用越来越多的命令,或快捷键,来帮助我们提高工作效率.本文记录了我在平时积累的常用命令,分享给大家. git命令 基本命令 set LESSCHARSET=utf-8 --idea T ...
- Linux面试题(史上最全、持续更新、吐血推荐)
文章很长,建议收藏起来,慢慢读! 疯狂创客圈为小伙伴奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : <Netty Zookeeper Redis 高并发实战> 面试必备 + 大厂必备 ...
- git常用命令(持续更新中)
git常用命令(持续更新中) 本地仓库操作git int 初始化本地仓库git add . ...
- 【github&&git】4、git常用命令(持续更新中)
git常用命令(持续更新中) 本地仓库操作git int 初始化本地仓库git add . ...
- SDK 上报信息 史上最全 持续更新
SDK 上报信息 史上最全 持续更新 接入SDK总会遇到各种需求,有些SDK巴不得把玩家信息全部上报到他们服务器! 以下是我接SDK遇到的, 欢迎大家补全. 上报事件 注册(按道理这个应该是SDK的功 ...
- 100万套PPT模板,包含全宇宙所有主题类型PPT,绕宇宙100圈,持续更新
100万套PPT模板,包含全宇宙所有主题类型PPT(全部免费,都是精品,没有一张垃圾不好看的PPT,任何一张PPT拿来套入自己的信息就可以立马使用),绕宇宙100圈,任意一个模板在某文库上都价不菲.强 ...
- 【馨儿收藏】群星《2019最新好听DJ舞曲精选》全系列【WAV/在线/百度】(持续更新)
本人作为一名音乐发烧友,一直喜欢追求无损音乐,平时在开发编程无聊的时候,希望享受音乐的过程,追求完美,我这边整理了一系列的比较不错,新的好听的无损音乐,希望大家能够喜欢. [馨儿收藏]群星<20 ...
- 史上最全的spark面试题——持续更新中
史上最全的spark面试题——持续更新中 2018年09月09日 16:34:10 为了九亿少女的期待 阅读数 13696更多 分类专栏: Spark 面试题 版权声明:本文为博主原创文章,遵循C ...
随机推荐
- 前后端分离项目,配置问题导致后端session丢失问题
今天遇到一个巨坑,后端写了获取验证码接口,以及验证验证码接口 获取验证码接口: /// <summary> /// 获取验证码 /// </summary> /// <r ...
- HTTP 返回状态码403,404,502等不同报错原因及解决思路
要学会看日志rpm的默认路径 /var/log/nginx/源码的默认路径 安装路径/logs/ 排错思路: 1)服务器启动失败,直接"nginx -t"测试语法 看配置文件是 ...
- 【责任链设计模式详解】C/Java/JS/Go/Python/TS不同语言实现
简介 责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,也叫职责链模式.命令链模式.这种模式为请求创建了一个接收者对象的链,允许你将请求沿着处理者链进行 ...
- 创建用户认证授权的 kubeconfig 文件
创建用户认证授权的 kubeconfig 文件 当我们安装好集群后,如果想要把 kubectl 命令交给用户使用,就不得不对用户的身份进行认证和对其权限做出限制. 下面以创建一个 cby 用户并将其绑 ...
- 【Vue原理模拟】模拟Vue实现响应式数据
1. 预期效果 当数据变动时,触发自定义的回调函数. 2. 思路 对对象 object 的 setter 进行设置,使 setter 在赋值之后执行回调函数 callback(). 3.细节 3.1 ...
- 京东LBS推荐算法实践
作者:京东零售 郑书剑 1.推荐LBS业务介绍 1.1 业务场景 现有的同城购业务围绕京东即时零售能力搭建了到店.到家两种业务场景.同城业务与现有业务进行互补,利用高频,时效性快的特点,可以有效提升主 ...
- subprocess,哈希,日志模块
hashlib模块: # 1. 先确定你要使用的加密方式: md系列,sha系列 md5 = hashlib.md5() # 指定加密方式 # 2. 进行明文数据的加密 data = 'hello12 ...
- Java并发(一)----进程、线程、并行、并发
一.进程与线程 进程 程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,数据加载至内存.在指令运行过程中还需要用到磁盘.网络等设备.进程就是用来加载指令.管理内存.管理 ...
- React 组件进入和退出动画实现
在实现一个React中的弹框组件时,想给组件加个进入和退出动画,但发现React没有Vue3那样现成的api,因此需要自己设计. 主要思路为给组件添加一个state来选择className,不同的cl ...
- 基于DotNetCoreNPOI封装特性通用导出excel
基于DotNetCoreNPOI封装特性通用导出excel 目前根据项目中的要求,支持列名定义,列索引排序,行合并单元格,EXCEL单元格的格式也是随着数据的类型做对应的调整. 效果图: 调用方式 可 ...

