git windows学习记录碰见问题以及解决方式

首先打开git cmd

mkdir learngit    //创建文件夹
cd learngit      //进入文件夹

在这里插入图片描述
ps:你可以先进入一个文件夹,然后在创建,我这里直接使用安装路径了,图方便
接下来便是通过git init 来创建仓库

git init

在这里插入图片描述
这里提一嘴,因为外面都说windows自带文本编辑不行,所以我也跟着使用notepad++,下载可直接搜索,然后随便选择一个txt,右键属性,吧打开方式修改成notepad++,以后所以txt只要双击打开都会说默认notepad++打开

现在我们在learngit目录下创建readme.txt 随便输入一些你喜欢的信息,然后调用git add readme.txt,将文件加入到库

git add readme.txt

在这里插入图片描述
然后在调用commit命令提交

git commit -m "my first git file readme.txt"
//“ ”这里是你对本次操作的一个说明,以后你可以直接查询到本次

特别说明,add每一次只能添加一个命令,而commit提交时对多个文件进行提交
在这里插入图片描述
这里还可以看到,我先进入的lala文件夹

那我们如果在外部修改了文件,但是我们不记得了该怎么办呢,
使用

git status

在这里插入图片描述
可以看出我们已经外部修改了readme

如何查看修改了哪里

git diff readme.txt

在这里插入图片描述
可以看出我把Git is … system
修改成了 git is … system asdasd

如果没问题我们提交(有问题暂时不管,后面会说怎么回滚)在这里插入图片描述
现在我们已经修改了,我们可以通过查看日志的方式看看我们提交的那些行为
在这里插入图片描述
这里是不同的日志,因为我前面调试了,所以你的会和我不同,下面讲解一下
commit 4019…可以当作操作码,是SHA1加密数字16进制。不用太关系。
HEAD表示的是当前版本,HEAD^ 表示上一个版本,每一个^表示一个版本,因为Windows会出现这样的情况
在这里插入图片描述
只会出现一个more? 后面的no是我多输的,我还以为问我是不是还要回滚。所以我填了一个no,表示很尴尬,特地去查了一下
^在git里面是换行的意思,所以他问你还要不要继续输入,
解决方式:
使用双引号

git reset --hard "HEAD^"
git reset --hard HEAD^^
git reset --hard HEAD~1
git reset --hard HEAD~

对此说明^^是类似Windows里面你想输入特殊字符就需要一个前置
~1(后面可接任意数字,表示回滚版本数量,100就是100个版本)
回滚完成结果:
在这里插入图片描述
然后我们通过type命令和log命令查看结果

type readme.txt
//特别提一嘴这里是Windows平台,linux是这一句
cat readme.txt

在这里插入图片描述
可以看出少了一个版本
现在我们回滚了一个操作,那我们如果想要回滚回滚操作怎么办,是的就是套娃,等于取消回滚操作
我们这样操作需要一定的条件才能进行就是你的cmd窗口还没有关闭,。
我们去那个操作下面看会有一个commit_id(对应的sha)
我们不需要打全找到部分就行了(唯一才行)

git reset --hard 401b//这个401b是我从上面找到,你的肯定不是这个

在这里插入图片描述
确实回滚了回滚操作

这里做一个声明为什么他回滚前进为啥这么快,主要原因是他回滚的时候并没有真正删除,(这里还有说明,进行操作之后他会生成一个新的版本,旧的版本还在),所以回滚什么的在cmd里面完全就是一个指针变化了而已
在这里插入图片描述
那如果你关闭了才后悔怎么办,他们提供了

git reflog

在这里插入图片描述
通过这个我们可以看到每次操作的commit 操作id

那么我们怎么删除文件呢,敢敢单单使用del命令linux使用的是(rm)
在这里插入图片描述

这一些基本操作我们都弄完了,下面是远程仓库了,
首先我们需要搭建一个远程仓库,因为要自己搭建服务器等,我们使用了免费的github作为仓库。
首先创建一个GitHub账号,然后打开你的git bash,(安装git就会有)输入以下命令

$ ssh-keygen -t rsa -C "你的邮箱,这里填的是你git账号的邮箱"

然后一路回车就完事了。
我们进入GitHub页面,进入count setting,里面有一个
在这里插入图片描述
在这里插入图片描述
创建一个shh,将
刚刚创建的sha密钥放进去路径:
C:\Users\lala.ssh(lala是主机名字)
在这里插入图片描述
将id_rsa.pub里面的信息复制
填入key,title随便写
在这里插入图片描述
前面的所有操作你可以类似使用外部API,我们要将我们的身份放到别人的平台才能使用(比如调用百度地图什么的)

现在我们关联好了,那我们要把我们的仓库放到平台上面去。
想通过如图所示创建仓库
在这里插入图片描述
跟着流程进行关联
在这里插入图片描述
输入完那三行之后就会弹出链接,你跟着点两下就可以了。
在这里插入图片描述
成功页面
访问我们GitHub
在这里插入图片描述
确实上传上去了。
从现在开始只要我们做了提交,就可以通过

git push origin main  

推送至GitHub
后续会弹出警告,回复yes就可以了

现在我们探讨将该操作反过来该怎么进行(将网络上的库,导入到本地)
首先我们新建一个网络仓库
使用语句

git clone git@github.com:lala-lzw/gitskills1.git

这里路径要换成你自己的
在这里插入图片描述
下面开始分支结构:
分支结构的存在是必然的,一般库是多人访问以及修改的,所以分支结构,我们之间互相不打扰的系统是必然的。
在我们创建的库里面是只存在一个分支那就是monster(main)分支了,现在已经变成main了

git checkout -b dev  //创建并且切换到分支
git branch   //查看有哪些分支 

在这里插入图片描述
现在我们修改readme并且在dev分支提交一下

git merge dev

在这里插入图片描述

从这里发现我们原本是没有吧分支的结果改到main里面的,后来我调用了,合并操作他才进入main里面
合并完成之后dev分支已经没有用了。我们完全可以删了他。

git branch -d dev

结果如图所示
在这里插入图片描述
因为git checkout 。。。 会有歧义,所以现在更流行使用switch代替checkout进行各种分支操作。

总的来说:

git branch  //查看分支
git branch <name>  //创建分支
git checkout <name> // 切换分支
git git checkout -b <name>   //切换并创建分支
git merge <name> //合并分支
git branch -d <name>  删除分支

分支就会出现情况,eg;我们在dev分支修改了文件1,然后在主文件的里面也修改了文件1,然后在进行合并操作,那不就出现了问题了吗?dev合并操作应该是main的上一个状态的文件1,可是现在的文件1已经被修改了,那么我们如何进行修改呢。
在这里插入图片描述
他们提交之后就出现这样的请分别表示两个不同分支的结果
我们直接手动,去这些地方进行修改,然后在进行提交,这样就行,ps:个人觉得这方法好lou,但是没有办法,网上有解决方式,但是有点累了,暂时不细究了。

下面我们看当前情况,我正在写但是,出现了bug,我必须停下来工作先把bug解决了,然后再回复工作现场,继续工作,这个类似cpu断点切换,我们需要进行现场保存喔。

首先我们保存现场:

git stash

,然后可以查看我们是否成功
在这里插入图片描述
发现没有了,是个空的
然后我们开一个修改bug的分支语句:
在这里插入图片描述
将bug修改并且提交他们。并进行合并
在这里插入图片描述
切换到主:下一步查看并恢复现场
在这里插入图片描述
就可以继续工作了。

feature 分支。因为我们做功能是一个一个做的,我们可以每一个公能都开分支,然后最后合并他。如果正常情况下,我们只需要类似bug那样,创建分支并提交结果就完事了,但是。你写完了,这个分支因为一些原因不能要了,需要秘密销毁。我们使用branch -d进行删除,他会提示分支结果还未提交不能删除所以我们使用强制删除分支

git branch -D <name>   //大写就完事了 

我们需要将本地的所有修改以及各个分支的操作提交到远程库我们可以使用

git push origin main  、、来进行和远程推送

现在我们看那个commit id是很麻烦的所以我们还引入了tag标签机制

git tag v1.0

就行了
如果你忘记打标签你还可以用

git log  --pretty=oneline --abbrev-commit//找到你要打标签的版本
git tag tagname  commit_id // 打上标签

在这里插入图片描述
还可以给tag写注释

git tag -a v0.1 -m "version0.1"    commit_id   //完事

还可以对标签进行删除呀等等操作。不细说了,使用的时候在写。
git暂时就到这里,还有很多很多内容可以参考
点一下玩一年

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值