项目总体已完成。昨日进行优化和新增功能。
但是忘了切换到对应的分支后再去修改代码,改完代码后就不让切换分支了。
随后先( git add . )提交了代码,( git commit -m "" )上传了备注信息,再次切换
但不知道切换了分支之后,本地代码也会变成那个分支最后提交完的状态。
比如:切换回了20天前的分支,随后本地的目录、代码也变成了20天前这个分支最后更新时的样子。
所以当看到本地项目内的组件缺少了,代码缺少了;直接懵逼了。
然后一顿操作猛如虎的瞎搞成功凉了。。。由此记录一下正确的处理方法:
以及新学习到的 git命令操作
首先尽量要记得,先切换到对应的分支去,再进行对代码的操作;
若遇到 a分支 内的代码写了一些,立刻被通知需要修改 b分支 内的代码,但是又不想立刻提交 a分支 的代码时:
可以用:( git diff )查看 a分支工作区文件的修改内容(有)
1、首先用:( git stash ) 将 a分支的工作区文件内容 放到暂存区
再次用:( git diff )查看 a分支工作区文件的修改内容(没有)
2、随后:切换 b分支 去修改代码,完成后再回到 a分支
3、利用:( git stash pop ) 或( git stash apply ) 将 a分支的工作区文件内容 取出来,恢复到暂存时的状态
( git stash pop ) 与 ( git stash apply ) 的区别为:
用( git stash )命令之后会在stash列表中生成一个对应的信息,
使用 ( git stash apply )命令恢复,stash列表中的信息是会继续保留的;
而使用( git stash pop )命令进行恢复,会将stash列表中的信息进行删除。
进阶操作:
( git stash save "要添加的备注信息" ) :与 `git stash` 命令功能相同,区别是可以添加备注
( git stash --all ) 或( git stash save --all "要添加的备注信息" ) :可以将未被跟踪过的和忽略的文件都储存到暂存区
多次使用 ’git stash’ 命令后,栈里充满了未提交的代码,这时候可能对将哪个版本恢复回来困惑;
1、第一次修改暂存
2、 第二-第三次修改暂存
( git stash list )可以将当前的Git栈信息打印出来,你只需要将找到对应的版本号:
( git stash pop stash@{$num} )恢复某版本缓存的工作内容,将缓存堆栈中的对应stash删除,并将对应修改应用到当前的工作目录下
( git stash apply stash@{$num} )恢复某版本缓存的工作内容,但不会把存储从存储列表中删除,并将对应修改应用到当前的工作目录下
上面命令出错误了,原因:花括号被认为是代码块执行标识符,若想正常使用,可用反引号 `` 进行转义
实际可用命令为:( git stash pop stash@`{0`} )、( git stash apply stash@`{0`} )
stash 暂存区内太多存储,想要删除如下:
( git stash drop stash@{$num} ) :丢弃stash某个版本的存储,从列表中删除这个存储(别忘了要使用 反引号 `` 进行转义)
( git stash clear ):删除所有缓存的stash版本
一些别人写的 `git stash` 使用:https://www.cnblogs.com/zndxall/archive/2018/09/04/9586088.html ; https://blog.csdn.net/tpz789/article/details/113150456
回到正轨:
如果代码出问题了,可以使用版本回滚,将代码回滚到某提交版本:
首先( git log )查看所有版本号,按 q 为退出
随后( git reset --hard 需要的版本号 )将代码回滚到自己需要的版本号
最后( git push -f )强制提交,将云端的版本号替换成回退后的版本号
强制推送还可写为:( git push origin 云端分支名 –force )
切换了旧的分支之后,本地代码也回到了旧分支的代码状态,切换则可变回
这时候将最新分支的代码合并到旧分支里去,旧分支的代码也会变成最新的
首先切换到旧分支( git checkout 旧分支 ),查看自己所属分支( git branch )
随后合并最新分支的代码( git merge 最新分支 ),将代码变成最新的
将云端某分支的代码下拉到自己的本地分支:
首先创建或切换到本地分支:( git checkout -b 分支名 )若已存在也不需要 -b
然后将云端的分支代码下拉到本地:( git pull origin 分支名 )
本地分支与云端分支同名
另外插入个知识:
克隆云端项目代码:( git clone 仓库的http链接 )
`git clone` 命令用于克隆GitHub上的项目到本地目录
先进入本地存放目录后,使用该命令
克隆的项目永远都是:master分支下的项目代码
哪怕进入了别的分支。克隆的也依旧是:master分支下的项目代码