git 常用操作

git stash工作区暂存代码

git pull 拉代码的时候,或者切换分支的时候,防止冲突和不便,,会用到git stash,将工作区内容暂存起来。

比如:为了fix 一个bug, 先stash, 使返回到自己上一个commit, 改完bug之后再stash pop, 继续原来的工作。

怎么办:

1、git stash

备份当前工作区的内容,保存到git 栈中,从最近的一次commit中读取相关内容

2、git pull 或者做其他的工作

3、git stash pop

从git栈中获取到最近一次stash进去的内容,恢复工作区的内容。。获取之后,会删除栈中对应的stash。。

由于可能会stash多次,git使用栈管理,我们可以使用git stash list查看所有的stash

git stash list

显示git栈中的所有工作区内容的备份,

比如使用git stash apply stash@{1},就可以把版本号为stash@{1}的备份取出,不会删除对应的stash。。0为最新版本

git stash clear

清空git栈

还可以git reset --hard放弃本地修改,然后就可以git pull了。。

 

 

 

git 放弃本地修改,强制拉取更新

开发项目时,对于本地已修改但又不想保留的代码(比如你代码改崩了),可以用如下两种方法来重置代码:

1、restore 重置
如果你修改了代码,但是并未执行 git add 操作,可直接执行:

  git restore .

. 表示所有文件,如果想重置个别文件,指定文件路径即可

  git restore <文件>...

注意⚠️:如果你已经执行了 git add 操作,此时代码已保存至暂存区,需要先取消暂存区变更:

  git restore --staged .

或者

  git reset .

然后,再执行 git pull 拉取远程代码同步即可。

2、reset 回退
reset 比较暴力,相当于 可适用于 代码在工作区、暂存区、仓库区等任何场景,重置后不可恢复🙅‍♂️,对于新手有一定的安全隐患。

  git fetch --all
  git reset --hard origin/master
  git pull // 这一步为了同步远程代码,不需要的话可不执行

git fetch 指令是下载远程仓库最新内容,不做合并。
git reset 指令把HEAD指向master最新版本。
reset --hard:重置后不保留暂存区和工作区
reset --soft:保留工作区,并把重置 HEAD 所带来的新的差异放进暂存区(此时代码的变更状态相当于执行完 git add命令)
reset --mixed:reset的默认参数,保留工作目录,并重置暂存区(此时代码的变更状态相当于执行 git add命令之前)

3、stash 暂存(推荐)
我比较喜欢的方法,是用stash,暂存代码再同步。

首先,将所有代码添加至暂存区:

  git add .

然后,将代码临时保存:

  git stash

此时代码会重置到修改前的状态,可以同步远程仓库区,完事儿。

  git pull

同步后,如果还想继续修改原来的代码,可将临时代码恢复至工作区:

  git stash pop

注意⚠️,stash 用法有很多,比如save,push,pop,clear等,需要使用可以查阅stash 命令

原文链接:https://blog.csdn.net/haoaiqian/article/details/78284337

 

git 将分支替换为master

git branch -m master old-master
git branch -m wait_change_master master
git push -f origin master

上述操作就是将本地的分支重命名,然后将重命名的分支变成master ,然后将master强制推送到github  

 

 

强制同步远程tags

在用Git去更新代码的时候有遇到下面的问题:

1
2
3
4
5
> git pull --tags origin master
From https://github.com/MY/REPO
* branch            master     -> FETCH_HEAD
! [rejected]        latest     -> latest  (would clobber existing tag)
9428765..935da94  master     -> origin/master

原因是我删了原有的一个tag,然后重新创建了一个相同名字的。
解决方案:

1
git fetch --tags -f

强制刷新一下本地的tags

https://stackoverflow.com/questions/58031165/how-to-get-rid-of-would-clobber-existing-tag

 另外 这里补充几条tag的操作命令:

1. 本地删除

git tag -d v0.1.2
2 删除远程tag
  git push origin --delete tag @dp/xtable@0.2.0
 
 https://blog.zengrong.net/post/delete_git_remote_brahch/#%E8%8E%B7%E5%8F%96%E8%BF%9C%E7%A8%8Btag
 
 
 
 
 
 
 
 
 
posted @   方帅  阅读(165)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示