git教程--使用git stash保存和恢复进度

一、应用场景 当正在dev分支上开发某个项目,这时项目中出现一个bug,需要紧急修复,但是正在开发的内容只是完成一半,还不想提交,这时可以用git stash命令将修改的内容保存至堆栈区,然后顺利切换到hotfix分支进行bug修复,修复完成后,再次切回到dev分支,从堆栈中恢复刚刚保存的内容。 由于疏忽,本应该在dev分支开发的内容,却在master上进行了开发,需要重新切回到dev分支上进行开发,可以用git stash将内容保存至堆栈中,切回到dev分支后,再次恢复内容即可。 总的来说,git stash命令的作用就是将目前还不想提交的但是已经修改的内容进行保存至堆栈中,后续可以在某个分支上恢复出堆栈中的内容。这也就是说,stash中的内容不仅仅可以恢复到原先开发的分支,也可以恢复到其他任意指定的分支上。git stash作用的范围包括工作区和暂存区中的内容,也就是说没有提交的内容都会保存至堆栈中。 二、命令使用 1、git stash 保存当前工作进度,会把暂存区和工作区的改动保存起来。执行完这个命令后,在运行git status命令,就会发现当前是一个干净的工作区,没有任何改动。 git stash 1 使用save可以添加一些注释。 git stash save 'message…' 1 2、git stash list 显示保存进度的列表。 3、git stash pop [–index] [stash_id] 如下为恢复最新的进度到工作区。git默认会把工作区和暂存区的改动都恢复到工作区。 git stash pop 1 如下为恢复最新的进度到工作区和暂存区。(尝试将原来暂存区的改动还恢复到暂存区) git stash pop --index 1 如下为恢复指定的进度到工作区。stash_id是通过git stash list命令得到的。 git stash pop stash@{1} 1 通过git stash pop命令恢复进度后,会删除当前进度 4、git stash apply [–index] [stash_id] 将堆栈中的内容应用到当前目录,不同于git stash pop,该命令不会将内容从堆栈中删除,也就说该命令能够将堆栈的内容多次应用到工作目录中,适应于多个分支的情况。 5、git stash drop [stash_id] 删除一个存储的进度。如果不指定stash_id,则默认删除最新的存储进度。 6、git stash clear 删除所有存储的进度。 7、git stash show 查看堆栈中最新保存的stash和当前目录的差异。 8、git stash branch 从最新的stash创建分支。 应用场景:当储藏了部分工作,暂时不去理会,继续在当前分支进行开发,后续想将stash中的内容恢复到当前工作目录时,如果是针对同一个文件的修改(即便不是同行数据),那么可能会发生冲突,恢复失败,这里通过创建新的分支来解决。可以用于解决stash中的内容和当前目录的内容发生冲突的情景。 发生冲突时,需手动解决冲突。 参考来自: https://blog.csdn.net/stone_yw/article/details/80795669, https://blog.csdn.net/daguanjia11/article/details/73810577, https://git-scm.com/docs/git-stash/2.0.0 ———————————————— 版权声明:本文为CSDN博主「林猛男」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 […]

Git — — 配置与查看( 用户名和邮箱)

1、查看配置

  系统文件配置所在位置: 2、配置 用户名与邮箱(用户标识必须) 配置命令

用户自己配置所在位置: from:https://www.cnblogs.com/obge/p/14212013.html

Git: There is no tracking information for the current branch.

在执行git pull的时候,提示当前branch没有跟踪信息:

  对于这种情况有两种解决办法,就比如说要操作master吧,一种是直接指定远程master:

  另外一种方法就是先指定本地master到远程的master,然后再去pull:

  这样就不会再出现“There is no tracking information for the current branch”这样的提示了。 ———————————————— 版权声明:本文为CSDN博主「K.Sun」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/sinat_36246371/article/details/79738782

Git撤销对远程仓库的push&commit提交

撤销push 1. 执行  git log查看日志,获取需要回退的版本号 2. 执行 git reset –-soft <版本号> ,如 git reset --soft 4f5e9a90edeadcc45d85f43bd861a837fa7ce4c7 ,重置至指定版本的提交,达到撤销提交的目的 然后执行 git log 查看 此时,已重置至指定版本的提交,log中已经没有了需要撤销的提交  git reset 命令分为两种: git reset –-soft 与 git reset –-hard ,区别是: 前者表示只是改变了HEAD的指向,本地代码不会变化,我们使用git status依然可以看到,同时也可以git commit提交。后者直接回改变本地源码,不仅仅指向变化了,代码也回到了那个版本时的代码。 3. 执行 git push origin 分支名 –-force ,强制提交当前版本号。 至此,撤销push提交完成。 撤销commit 1. 执行 git log 查看需要撤销的commit的前面一个提交版本的id; 2. 执行 git reset --hard commit_id ,该commit_id为需要撤销的commit的提交的前面一个提交的版本,即需要恢复到的提交的id,重置至指定版本的提交,达到撤销提交的目的 3. 执行 git log 查看,commit提交已撤销   from:https://www.cnblogs.com/chaoxiZ/p/9714085.html

Git远程仓库地址变更本地如何修改

公司搬移, 作为git仓库的服务器IP地址变了。 本地代码挺多,重新检出太占时间,可以修改一个什么配置让我本地仓库和新的远程仓库建立关联吗, 答案是肯定的! 方法有很多,这里简单介绍几种: 以下均以项目git_test为例: 老地址:http://192.168.1.12:9797/john/git_test.git 新地址:http://192.168.100.235:9797/john/git_test.git 远程仓库名称: origin   方法一 通过命令直接修改远程地址 进入git_test根目录 git remote 查看所有远程仓库, git remote xxx 查看指定远程仓库地址 git remote set-url origin http://192.168.100.235:9797/john/git_test.git     方法二 通过命令先删除再添加远程仓库 1.进入git_test根目录 2.git remote 查看所有远程仓库, git remote xxx 查看指定远程仓库地址 3.git remote rm origin 4.git remote add origin http://192.168.100.235:9797/john/git_test.git     方法三 直接修改配置文件 进入git_test/.git vim config

修改 [remote “origin”]下面的url即可 方法四 通过第三方git客户端修改。 以SourceTree为例,点击 仓库 -> 仓库配置 -> 远程仓库 即可管理此项目中配置的所有远程仓库, 而且这个界面最下方还可以点击编辑配置文件,同样可以完成方法三。 原文链接:https://blog.csdn.net/asdfsfsdgdfgh/article/details/54981823 from:https://www.cnblogs.com/vickystudy/p/11505936.html

一个项目设置两个Git地址,实现同时推送到两个Git仓库

方法一 直接给git仓库添加Origin时,可以实现推送到两个仓库,但是需要推送两次,还是记录一下 在已有Git仓库的项目中gitA中添加另一个gitB远端的地址

  先拉取gitB地址的数据

  把gitA中的内容推送到gitB的地址中

  至此,我们可以通过推送两次的方法,将一个项目提交到两个git地址了

  但是略繁琐,所以我们通常使用方法2,操作方法2的时候,注意清掉上方操作,删除上面写好的gitB 的远端地址

  方法二 给origin 增加一个可以push的地址

  至此,我们就可以直接一个push,同时推送到两个git地址。

  这样一份代码就可以提交到两个git仓库上了 注意:如果需要删除

    方法三 可以通过直接修改 .git\config文件 原内容如下

  我们需要添加一个新的remote节点和branch节点就可以实现一次推送更改两个仓库。 添加后

  ———————————————— 版权声明:本文为CSDN博主「CXLiao」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/CXLiao/article/details/105286752

git 如何取消add操作

可以直接使用命令    git reset HEAD 这个是整体回到上次一次操作 绿字变红字(撤销add) 如果是某个文件回滚到上一次操作:  git reset HEAD  文件名 红字变无 (撤销没add修改) git checkout — 文件   from:https://www.cnblogs.com/jpfss/p/11888157.html

fatal: refusing to merge unrelated histories解决

Git :fatal: refusing to merge unrelated histories解决 今天本地创建了一个仓库(有README),把本地仓库和Github上关联以后,发现git pull,git feach提醒fatal: refusing to merge unrelated histories 上网查到原因是两个分支是两个不同的版本,具有不同的提交历史 加一句 $git pull origin master --allow-unrelated-histories 1 可以允许不相关历史提,强制合并,确实解决了这个问题,感谢网友 ———————————————— 版权声明:本文为CSDN博主「天骄山仔」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_39400546/article/details/100150320

解决git bash here 启动慢的问题

在安装完git之后,每次通过右键启动git 命令行总是很慢 这个原因是因为用了 AMD显卡 !! 解决方法如下:

    from:https://blog.csdn.net/lxp_mocheng/article/details/106273392

Github标星34K+Star,这款开源项目助你秒建Git服务!

Gogs简介 Gogs是一款极易搭建的自助Git服务,使用Go语言开发,只要Go语言支持的平台它都支持,包括Linux、Mac OS X、Windows以及ARM平台。Gogs对系统硬件要求极低,你甚至可以在树莓派上搭建它。 项目地址:https://github.com/gogs/gogs 安装 Gogs在Docker环境下的安装非常简单,只需要两个命令即可,推荐使用该方式来进行安装。 首先我们需要先下载Gogs的Docker镜像;

下载完成后使用docker run命令即可运行服务;

这里我们说下命令中值得注意的地方,10022对应的是Gogs的SSH服务端口,10080对应的使用Gogs的HTTP服务端口,我们还将容器的数据目录挂载到了宿主机的/mydata/gogs目录下,这样就算我们重新创建容器数据也不会丢失。 配置 安装完成后,我们第一次访问Gogs服务会显示一个设置页面,访问地址:http://192.168.5.19:10080/ 数据库设置,这里我们直接使用内置的SQLite3数据库即可,使用其他的需要自行搭建数据库; 应用基本设置,主要修改域名、SSH端口号和应用URL即可。 使用 注册 配置好以后会直接跳转到登录界面,首先注册一个帐户; 注册完成后,登录即可进入控制面板页面。 创建仓库 直接使用我的仓库右侧的加号即可创建仓库,简单设置下仓库名称和可见性来完成创建; 创建成功后直接使用克隆地址即可克隆该仓库; 我们可以直接使用IDEA的Git检出功能; 检出完成后,加入我们的代码直接提交、推送,在Gogs里面就可以看到我们提交的代码了。 工单管理 这里的工单管理,有点类似Github上面的Issue的功能,我们可以通过创建工单按钮来创建; 输入我们的标题、内容和标签以后即可创建; 创建完成后显示效果如下。 添加用户 有时候管理员需要新建一些帐户来协作开发,此时我们只要点击头像->管理面板->用户管理即可打开用户管理界面; 然后点击创建新的帐户,输入相关信息即可完成创建。 管理协作者 创建完成后,我们可以在仓库页面的仓库设置中打开管理协作者功能; 之后通过输入协作者账户,点击增加新的协作者并设置好权限即可,这样协作者就可以访问并向该仓库提交代码了。 迁移外部仓库 Gogs还提供了从外部仓库迁移代码的功能,通过头像左侧的加号,然后选择迁移外部仓库即可; 这里以迁移Gitee上的mall项目为例,项目地址:http://gitee.com/macrozheng/mall 迁移成功后就可以在Gogs里面看到mall项目了! Gogs VS Gitlab 之前有写过一篇《10分钟搭建自己的Git仓库》,使用的是Gitlab,下面对比下Gogs和Gitlab在安装使用过程中的优缺点,仅代表个人观点。 比较方面 Gogs Gitlab Docker镜像大小 44MB 836MB 启动速度 很快,几秒 很慢,机器配置不好要10分钟 配置要求 很低,树莓派都可以 很高,吃内存,吃CPU 访问速度 够快 机器配置好也还可以 功能 功能较少 功能很丰富   from:https://mp.weixin.qq.com/s/WYHuAvN1pt_TGkBVWBnPSA

GIT更新远程分支列表

当本地和服务器上的远程列表不一致时,使用下面的命令更新: git remote update origin --prune git remote update origin -p   参考:https://blog.csdn.net/sd_csdn_scy/article/details/82025009

“git clone” 漏洞或可导致克隆过程中执行代码

近日,GitHub 官博披露了一个 “git clone” 命令的漏洞 CVE-2021-213,该漏洞可能导致特制的仓库在 git clone 过程中能够执行代码。 该漏洞源于 clean/smudge 过滤器(如Git LFS)中的延迟检查机制。 如果一个特别制作的版本库包含符号链接以及使用 clean/smudge 过滤器的文件,可能会导致在克隆到不区分大小写的文件系统(如 NTFS、HFS+ 或 APFS(即 Windows 和 macOS上 的默认文件系统))时执行刚检查出来的脚本。这个过程中,注意,clean/smudge 过滤器是必须的,而 Windows 默认配置了 Git LFS,因此更易受到攻击。2.15 到 2.30.1 的版本均会受到影响。 解决这个漏洞的最有效方法是升级到 2.30.2。如不能立即升级,也可以通过以下任何一种方式来降低风险: 通过运行 git config --global core.symlinks false 禁用 Git 中的符号链接支持。 禁用对进程过滤器的支持。(可以通过运行 git config --show-scope --get-regexp 'filter/\…*/\ process' 来查看系统是否配置了这些过滤器) 避免克隆不受信任的仓库。 GitHub 本身不容易受到这种攻击,因为其不会在服务器上存储已检查出的仓库副本,但 GitHub Pages 除外,尽管它没有使用任何 clean/smudge 过滤器。目前,该问题已在 3 月 9 日星期二发布的补丁中进行了修补。   from:https://www.oschina.net/news/132640/git-clone-vulnerability-cve-2021-213