GIT 详细命令介绍
GIT
- SSH 配置
- 初始化仓库
- GIT四个区域
- GIT的四种状态
- git命令
- 查看仓库状态
- 把一个文件从本地工作目录移交到暂存区
- 把暂存区的内容在回滚到工作目录
- git add 撤销操作 也就是将暂存的数据删掉
- git restore 放弃工作目录中的更改
- git restore --staged…取消存储
- git deleted状态怎么处理
- 删除工作目录文件c
- 同时把本地目录和暂存区里面内容删除
- 提交本地仓库
- 直接对工作目录和暂存区的文件重命名
- 查看文件改变了什么内容 进行对比
- 当前历史git log 历史操作所有id 每次的commit的id git reflog
- 改变了工作目录 暂存区和本地仓库没有改变
- 现在是工作目录和暂存区改变一致了 但是错误 我用本地仓库回退,覆盖暂存区和工作目录
- 我要回退某一次 commit
- 分支
- 创建分支
- 查看分支
- 删除分支
- 提交数据
- 合并 谁合并谁
- 基本操作
- 设置用户名和邮箱
- 查看配置
- 创建 SSH Key
- 创建本地仓库,进行基本源代码管理
- 忽略 SSL 证书错误
- 储藏
- 撤消操作
- 版本回退
- 分支
- 标签
- 提交
- git pull 与 git pull --rebase 的区别
- git merge 与 git rebase 的区别
- 全部删除,你改的也没有了
SSH 配置
git安装克隆提示Cloninginto项目
git clone git@gitee.com:yyds123/ll.git
创建用户
git config --global user.name “名称”
git config --global user.email “邮箱”
git 生成秘钥 并连接 码云
1, ssh-keygen -t rsa -C “xxxxx@xxxxx.com” 注册码云的邮箱
按三次回车,不用添加任何东西
2, cat ~/.ssh/id_rsa.pub
查看秘钥 并复制 到 码云上
3, ssh -T git@gitee.com
出现 (Welcome to Git@OSC, yourname!) 证明链接成功
初始化仓库
GIT四个区域
最底层工作目录
第三层面、第一次暂存文件,是会在.git的目录下生产index文件
第二层面 本地仓库
第一层面 远程仓库
如果代码提交到本地仓库,在对文件做任何的增删改查操作都会对
操作进行记录
GIT的四种状态
未跟踪文件:只是存在工作目录(区域) Untracked files:
未被修改:已经存在本地仓库了,但是我没有对文件修改(都在工作,暂存区,本地仓库都有一份)
被修改状态:在本地仓库进行了修改
由于git是分布式版本控制工具,存在着本地仓库和远程仓库,所以我们在本地工作副本进行的编辑,要先提交到本地仓库,再从本地仓库推送到远程仓库。
git命令
查看仓库状态
git status
在master分支下 ,初始化commit ,没有任何事情commit
把一个文件从本地工作目录移交到暂存区
使文件状态从Untracked 变成Staged状态
git add a
把所有文件提交到暂存区
暂存区是在.index
把暂存区的内容在回滚到工作目录
git rm --cached c
git add 撤销操作 也就是将暂存的数据删掉
git reset HEAD projectApp/vhall_backend_frame/app/vendor/vhall-component/room/src/services/InavService.php
git restore 放弃工作目录中的更改
git restore projectApp/vhall_backend_frame/app/vendor/vhall-component/room/src/services/InavService.php
git restore --staged…取消存储
git restore --staged vendor/vhall-component/roo.room.sql
git deleted状态怎么处理
一种是 git rm --cached "文件路径",不删除物理文件,仅将该文件从缓存中删除;一种是 git rm --f "文件路径",不仅将该文件从缓存中删除,还会将物理文件删除(不会回收到垃圾桶)然后再推送到仓库
删除工作目录文件c
同时把本地目录和暂存区里面内容删除
删除c文件
git rm -f b
提交本地仓库
git commit -m "commit a"
直接对工作目录和暂存区的文件重命名
b.txt 改成 a
git mv b.txt a
查看文件改变了什么内容 进行对比
对比的是本地目录和暂存区
git diff a
本地目录提交到 暂存区
这样本地目录提交到 暂存区是一致的了文件内容
暂存区和本地仓库进行对比
git diff --cached a
当前历史git log 历史操作所有id 每次的commit的id git reflog
git log
git log --oneline --decorate
改变了工作目录 暂存区和本地仓库没有改变
用暂存去覆盖了工作目录
git checkout -- a
现在是工作目录和暂存区改变一致了 但是错误 我用本地仓库回退,覆盖暂存区和工作目录
说明 git diff a 说吗本地目录不一致了
我要回退某一次 commit
回退哪个commit 的id
git reset --hard (回退哪个commit 的id)
每一次的commit 的id 的历史记录
git reflog
分支
分支就是指向快照的一个指针
分支总是落在最后一个提交 HEAD(当前分支)
git log --online --decorate
创建分支
git branch testing
git branch
查看分支
查看本地分支 git branch
查看远程分支 git branch -r
查看本地和远程分支 git branch -a
清理本地无效分支(远程已删除本地没删除的分支): git fetch -p
如果分支太多,还可以用此命令进行分支模糊查找: git branch | grep 'branchName'
删除分支
删除本地分支 git branch -d 本地分支名删除本地已合并的分支: git branch -d [branchname]
某些情况下可以用 git branch -D [branchName] (使用时应注意是否已合并)删除远程分支 git push origin --delete 远程分支名[branchname]
推送空分支到远程(删除远程分支另一种实现)git push origin :远程分支名
提交数据
合并 谁合并谁
把testing命令合并的master上 ,当前是master
git merge testing
基本操作
设置用户名和邮箱
$ git config --global user.name "用户名"
$ git config --global user.email "邮箱"
- 其中,–global 是全局设置,如果想对特定项目使用不同配置,可取消该参数
- git config 还可以设置其他选项,因为平时不怎么用,所以详细可以参考 git config --help
查看配置
$ git config --list# 查看 Git 的某一项配置
$ git config user.name
创建 SSH Key
$ ssh-keygen -t rsa -C "邮箱"# 然后会在用户主目录下,发现 .ssh 目录,其中包含 id_rsa 和 id_rsa.pub 两个文件
# id_rsa.pub 是 SSH Key 公钥,将其添加到 github 的 SSH keys 中,就可
创建本地仓库,进行基本源代码管理
# 克隆
$ git clone 仓库地址# 远程仓库
$ git remote# 分支
$ git branch 分支名 // 创建
$ git checkout 分支名 // 切换# 合并
$ git merge 分支名# 拉取更新
$ git fetch 主机名 分支名 // 不合并
$ git pull 主机名 分支名 // 合并# 推送
$ git push 主机名 分支名# 打标签
$ git tag -a 版本号 -m "版本说明"
忽略 SSL 证书错误
通过 HTTPS 访问 Git 远程仓库时,如果服务器的 SSL 证书未经过第三方机构签署,那么 Git 就会阻止这一操作
$ env GIT_SSL_NO_VERIFY=true git clone 仓库地址
$ cd 仓库名称
$ git config http.sslVerify "false"- 使用 env 命令保证了忽略证书错误只应用于此次克隆
储藏
当有未提交的修改,执行 切换分支 或 拉取更新 需要仓库状态保持 clean 的一些操作时,可以使用 git stash 将目前的修改临时储藏起来
# 储藏
$ git stash# 查看储藏
$ git stash list# 应用最近储藏并删除
$ git stash pop# 应用指定储藏不删除
$ git stash apply [储藏名]# 移除储藏
$ git stash drop 储藏名
撤消操作
对于 工作区 和 暂存区 的修改,我们不能保证上次操作是完美的,git 就是这么强大,提供了很多 反悔 的操作
# 丢弃暂存区的文件,放回工作区
$ git reset HEAD 文件# 丢弃工作区的修改
$ git checkout -- 文件- 修改后没添加到暂存区,则撤销到 git commit 时的状态
- 修改后添加到暂存区,则撤销到 git add 时的状态# 覆盖上次提交
$ git commit --amend [-m "本次提交说明"]
版本回退
# 回退到之前的某次提交
$ git reset --hard commit_id- HEAD 指向当前版本
- git log 可以查看提交历史,以便确定要回退到哪个版本
- git reflog 可以查看命令历史,以便确定要回到未来的哪个版本# 撤销一个已经提交
$ git revert commit_id- 并没有从项目历史中移除这个 commit, 而是生成一个新的 commit
分支
Git 有很多优点,其中 分支使用方便 就是很显著的一条,创建仓库的时候,master 是默认的分支,一般,我们会创建其他的分支在上面进行开发,完后再将它们合并到主分支上来
# 创建开发分支
$ git branch dev# 创建并切换到开发分支
$ git checkout -b dev# 切换回主分支
$ git checkout master# 快速检出上一个分支
$ git checkout -# 查看所有分支
$ git branch -a# 查看合并到当前分支的分支列表
$ git branch --merged# 查看还没合并到当前分支的分支列表
$ git branch --no-merged# 删掉临时分支
$ git branch -d fix# 将开发分支推送到远程仓库
$ git push origin dev# 重命名分支
$ git branch -m dev develop# 删除远程分支
- $ git push origin --delete 分支名
- $ git push origin :分支名
标签
软件要发布一个新的版本的时候,我们通常给它打个 tag
# 打标签
$ git tag [-a] 标签名 [-m 附注信息 某次提交的id]# 推送标签到远程仓库
$ git push origin 标签名
$ git push origin --tags // 推送所有标签# 删除本地标签
$ git tag -d 标签名# 删除远程标签
$ git push origin --delete 标签名
$ git push origin :refs/tags/标签名
提交
# 花式查看提交
$ git log --pretty=oneline // 只显示一行
$ git log --abbrev-commit // 只显示 SHA-1 的前几个字符
$ git log --graph // 显示 ASCII 图形表示的分支合并历史
$ git log --relative-date // 使用较短的相对时间显示
$ git log --name-only // 仅在提交信息后显示已修改的文件清单
$ git log -n // 显示最近的 n 条提交
$ git log --author=fengshangwuqi // 仅显示指定作者相关的提交
$ git log --grep // 仅显示含指定关键字的提交# 没有任何改动的提交
git commit -m "a no chnage commit" --allow-empty主要用于一下情形:
- 标记新的工作或一个新功能的开始
- 记录对项目的跟代码无关的改动
- 跟使用你仓库的其他人交流
- 作为仓库的第一次提交,因为第一次提交后不能被 rebase
git pull 与 git pull --rebase 的区别
$ git pull = git fetch + git merge
$ git pull --rebase = git fetch + git rebase
git merge 与 git rebase 的区别
# 相同点
整合的最终结果所指向的快照是一样的# 不同点
## 提交历史不同
- merge 会生成一个新的 commit 节点,提交历史忠实地记录了实际发生过什么
- rebase 不会产生额外的 commit 节点,提交历史反映了项目过程中发生了什么
## 冲突处理策略不同
- merge 遇见冲突后会直接停止,等待手动解决冲突并重新提交后,才能再次 merge
- rebase 遇见冲突后会暂停当前操作,开发者可以选择手动解决冲突,然后 git rebase --continue 继续,或 --skip 跳过,或 --abort 停止# 注意事项
## 推荐 git merge 结合 --no-ff 一起使用
- git merge 默认是 fast forward(快速合并),适用于分支 B 从分支 A 从 checkout 出来后,分支 A 没有 commit
- 如果分支 B 被 checkout 出来后,分支 A 也有修改,那么就没法快速前进合并,会额外建立一个 merge commit,对分支 A 和分支 B 做一个合并操作,即 --no-ff,它的好处是保持了分支的结构
#1/ 工作区代码(文件被修改了,但未执行git add操作)
git checkout <filename>
#或
git checkout .#2/ 文件执行了git add到缓存区,并未commit提交
# 取消暂存
git reset HEAD <filename>
# 撤销修改
git checkout <filename> #3/ git commit到本地,没有git push到远端
git reset --soft HEAD~1 撤回最近一次的commit(撤销commit,不撤销git add)git reset --mixed HEAD~1 撤回最近一次的commit(撤销commit,撤销git add)git reset --hard HEAD~1 撤回最近一次的commit(撤销commit,撤销git add,还原改动的代码)#4/ git push提交到远端
#删除最后一次远程提交
#使用revert 会有新的 commit 记录
git revert HEAD
git push origin master
#使用reset 不会产生新的 commit 记录
git reset --hard HEAD^
git push origin master -f#回滚某次提交
git log
git revert <commit_id>#其他补充,冲突解决
#merge 冲突
git checkout test
git merge b1
git status
git add .
git commit -m 'conflict fixed'#本地提交冲突
git stash #暂存
git stash list #查看暂存列表
git pull #拉取
git stash pop stash@{0} #还原暂存的内容
git status #冲突文件
vim readme.txt #解决冲突<<< === >>>
git stash drop stash@{0} #删除暂存
git stash clear #清理所以暂存git add readme.txt
git commit -m "conflict fixed"
全部删除,你改的也没有了
git fetch --all && git reset --hard origin/分之名字
git 拉取远程代码
Git拉取远程代码
git 从远程拉取代码、推代码的步骤
Git 分支合并代码
Git恢复之前版本的两种方法reset、revert(图文详解)
git所划分成几个区域,各区域的作用以及各区域之间的联系
真的解决了我的问题!!!git配置ssh时报错:Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
git教程
GIT 详细命令介绍相关推荐
- Git 高频命令、版本回退、分支操作、文件修改删除、撤销、标签、远程仓库推送、拉取
1. 高频命令 git add 将工作文件修改提交到本地暂存区. git add . 将所有修改过的工作文件提交暂存区(常用). git commit -m "XXX" 为本次修改 ...
- Git基础-删除文件 rm/git rm 命令详解
1.文章概述 本文介绍git中删除文件的操作: 主要涉及命令如下 : 1.rm 2.git rm3.git rm -f4.git rm --cached5.git rm -r : 在删除文件夹的时候, ...
- git详细介绍,以及常用的操作,命令
GIT的介绍 官方中文版通俗易懂文档 git精讲视频 git分支操作 1.Git和svn的区别 Git是分布式版本控制系统 ,即局域网中,只要创建了git版本库的相关信息,该电脑就可以作为git的一个 ...
- 版本控制工具Git详细介绍和常用命令
一.安装Git 在linux系统使用非常方便,只需要打开shell界面,并输入: sudo apt-get install git-core 按下回车后输入密码,即可完成Git的安装.但我们可能更多情 ...
- Git详细用法:Git概述 安装 常用命令 分支操作 团队协作 、GitHub、idea集成Git、idea集成GitHub、Gitee 码云、GitLab
0 课程介绍 说明: 在公司想要使用idea集成git: 首选需要下载安装Git(查看第2章) 之后在中设置用户签名(查看3.1) 然后在idea中集成Git(查看第7章) - 0.1 学习目标 第1 ...
- Git基础(常用命令)介绍
版本控制是一种记录若干文件内容变化,以便将来查阅特定版本修订情况的系统. 关于版本控制分为三种:本地版本控制系统,如rcs:集中化的版本控制系统,如CVS.SVN:分布式版本控制系统,如Git. Gi ...
- git 提交命令_工作总结:Git的学习和使用,最详细的Git教程,从入门到精通
前言 Git简介 实用主义 深入探索 总结 参考资料 前言 Git 是程序员学习和工作都离不开发工具,今天和大家分享 Git 常用命令总结. Git简介 Git 是一种分布式版本控制系统,它可以不受网 ...
- git原理浅析及命令介绍
状态描写叙述 请记住,工作文件夹以下的全部文件都不外乎这两种状态:已跟踪或未跟踪.已跟踪的文件是指本来就被纳入版本号控制管理的文件,在上次快照中有它们的记录,工作一段时间后,它们的状态可能是未更新.已 ...
- linux中tags文件能删除吗,Git 详细介绍查看、删除、重命名远程分支和tag
Git 详细介绍查看.删除.重命名远程分支和tag 1. 查看远程 分支加上-a参数可以查看远程分支,远程分支会用红色表示出来: xiaosi@Qunar:~/code/qtown-score$ gi ...
最新文章
- linux驱动:音频驱动(四)ASoc之machine设备
- 前1000位粉丝的诞生
- C++ FAQs 第二版
- php mysql 获取错误_php怎样获取mysql错误信息
- 【推荐系统】双塔模型中的负采样
- 平舌音 Z C S 的正确发音方式
- 微信支付带动交易超720万元 核销首日武汉人开启“全城用券”模式
- 【Clickhouse】Clckhouse 视图 可以插入 但是查询不到
- javascript调用服务端验证控件
- python 函数 思维导图
- html前端几种加密方式的整理,前端js几种加密/解密方法
- Pycharm debug Process finished with exit code 1
- JQuery入门级-基础
- php nbl2,NBL二年级新军杀入总决赛 虽败犹荣已创造历史
- Prometheus实战--Uber背书的存储解决方案M3
- 03【Web】基础-JavaScript
- Flink入门教程(四)——窗口(二)
- OI回忆录——小学、初中
- 应用层协议详解 HTTP,DNS,STMP等
- 教你如何将PDF转换成其他格式!
热门文章
- C语言小游戏之五子棋
- 关关于印发北京市廉租住房、经济适用住房家庭收入、住房、资产准入标准的通知 于印发北京市廉租住房、经济适用住房家庭收入、住房、资产准入标准的通知
- 中国碳化硅(SiC)行业“十四五”规划和远景目标建议报告2022-2028年
- java以下声明变量中 是不合法的_java考试复习题
- Dsp28335课程设计
- IT运维服务设计的5项原则
- simulink+FlightGear飞行器建模仿真
- 优达学城机器学习之--决策树(Decision Trees)
- 2019计算机一级msoffice真题,【2019年整理】全国计算机一级MSOFFICE练习题带题解.pdf...
- html载入3d模型,three.js加载三维模型_郭隆邦技术博客