2025年如何查看git服务器上的文件(如何查看git服务器上的文件)

如何查看git服务器上的文件(如何查看git服务器上的文件)svg xmlns http www w3 org 2000 svg style display none svg

大家好,我是讯享网,很高兴认识大家。



 <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path> </svg> <p><img src="https://i-blog.csdnimg.cn/blog_migrate/8a65d5ef7d7439fc29bf56ecb9870ea6.jpeg" alt="在这里插入图片描述" /></p> 

讯享网

最近公司代码管控比较乱,有天就利用分支进行了代码梳理,当时就遇到一些困惑,抽空就把 再学了一下。

以前我是用命令的,但是敲命令对我来说还是有点麻烦(主要是git 功力不够),看到有同事用git桌面版(毕竟git官方的亲儿子)我也就跟着用了,不得不说真香,不过也有些限制,。当然现在很多IDE也都支持Git,并且也很强大,比如微软的 VSCode 对吧,推荐大家使用起来。

这篇文章拖了很久,最近整理基础时索性就把这篇完善了。

几个概念:

  • 版本库:git在本地开辟的一个存储空间,一般在 .git 文件里。
  • 工作区(workspace): 就是编辑器里面的代码,我们平常开发直接操作的就是工作区。
  • 暂存区(index/stage):暂时存放文件的地方, 后也就将工作区代码放到了暂存区(缓冲区)。
  • 本地仓库(Repository): 后就是将暂存区的代码放到本地仓库。
  • 远程仓库(Remote):线上代码存放的地方,如 github/gitee。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8xuUMaNl-1685108386689)(file:///Users/ethanyin/Library/Application%20Support/marktext/images/2023-05-06-19-18-34-image.png?msec=1685108372294)]
讯享网

资料均来源于网络,文章主要是自己的的一些操作实践和理解。行文如果 有误还希望评论指出,共同交流🤝🤝🤝

四种状态

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-soE13Ung-1685108386690)(file:///Users/ethanyin/Library/Application%20Support/marktext/images/2023-05-11-21-16-42-image.png?msec=1685108372354)]


先安装个 (Git - Downloads)

讯享网

菜鸟教程有个 (图解 Git | 菜鸟教程) 感觉对某些命令的描述还挺直观的。

当然最好的文档就是官方文档 Git - Reference,有啥疑惑就往这看就行~~

&lt;variable&gt; 尖括号内表示变量。 [optional] 中括号内表示可选

基础命令

公钥生成

 

然后在 同**友网站github😁 公钥处粘贴即可。

查看某条命令

初始化(clone/init)

讯享网

git init 命令创建一个空的Git存储库 - 本质上是一个 目录,其中包含 、、和模板文件的子目录。还将创建一个引用master分支 HEAD 的初始 文件

配置

就是全局配置(针对所有仓库)

 

远程配置,本地仓库与线上仓库关联就需要配置远程

讯享网
修改和提交
 

git status

显示索引文件和当前HEAD提交有差异的路径,工作树和索引文件有差异的路径,以及工作树中不被Git追踪的路径(也不被gitignore[5]忽略)。前者是你通过运行 会提交的东西;第二和第三者是你在运行 之前通过运行 可以提交的东西

提交信息图标

在提交信息中增加图标,能直观的透露提交内容, 帮助团队在查看提交记录时快速了解变更的性质。

  • 🎨 代码结构或格式的改进 (改善代码结构、提升可读性,或调整代码格式,但不改变代码逻辑)
  • ⚡ 提升性能的提交 (通过优化代码或资源,提升性能)
  • 🔥 删除代码或文件 (删除不再使用的代码、依赖或文件)
  • 🐛 修复 bug (修复功能或逻辑上的问题)
  • 🚑 修复紧急问题 (紧急修复生产环境或其他关键问题)
  • ✨ 引入新功能 (引入新的功能或特性)
  • 📝 撰写文档 (添加或更新项目的文档内容)
  • 🐧 修复在 Linux 平台上的问题 (修复与 Linux 操作系统相关的兼容性问题)
  • 🏁 修复在 Windows 平台上的问题 (修复与 Windows 操作系统相关的兼容性问题)
  • 💄 更新样式 (与 UI/样式相关的改动,不涉及代码逻辑)
  • ♻️ 代码重构 (重构代码以提升质量或维护性,但不改变功能)
  • 🔒 安全问题修复 (修复安全漏洞或加强安全措施)
  • ✅ 添加或更新测试 (为功能新增测试或更新已有测试)
  • 💚 修复 CI 构建问题 (修复 CI 流程中的问题)
  • ⬆️ 升级依赖 (升级项目中的依赖包或库版本)
  • ⬇️ 降级依赖 (降级项目中的依赖包或库版本)
  • 🔧 修改配置文件 (更新项目的配置文件或工具配置)
  • 👷 更新 CI 配置 (调整或更新持续集成相关的配置或脚本)
  • 🚀 部署功能 (与部署相关的改动)
  • 🗑 删除功能 (移除某些功能或模块)
查看提交历史
讯享网

我的日志打印设置

 

以上是之前 windows 的设置, 后面我在Mac上时间出不来(我看官网没有不支持星期几了)应该略作修改

讯享网

效果差不多这样

 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VQKFHxw6-1685108386690)(file:///Users/ethanyin/Library/Application%20Support/marktext/images/2023-05-07-10-42-44-image.png?msec=1685108372303)]

更多参考:

git log命令全解析_碧海凌云的博客-CSDN博客_git log (自己按需配置你想要得即可)

Git/git-log|pretty_formats

iterm2 git 在查看提交历史、配置,分支等信息时,退出需要 + q

查看操作记录
讯享网

推 / 拉代码

 
丢弃(discard)工作区的改变
讯享网

删除文件

当有些 提交过 的文件不需要了就可以删除掉.

 

清除文件

从当前目录开始,通过递归删除不受版本控制的文件来清理工作树。

通常,只会删除 Git 未知的文件,但如果 指定了该选项,也会删除忽略的文件。例如,这对于删除所有构建产品很有用。

简单来说: 删除工作区未被追踪的文件(Untracked files)

当然, 也可以通过配置 来让文件 不提示

讯享网

对于交互式删除(加 ),举个例子:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iueOdALK-1685108386690)(file:///Users/ethanyin/Library/Application%20Support/marktext/images/2023-05-06-20-08-50-image.png?msec=1685108372399)]

可以看到有几个选项,1 递归删除所有;3, 数字选择 ,可以单个数字,也可以1-3,选择1到3(满意了就 退回主菜单,选择1清除即可), 4 就是会询问每个删除的文件。

远程配置

 

上述方式配置会在某些操作时需要确认账号和密码,比较繁琐。 补充一下 方式

settings =&gt; Developer settings =&gt; Personal access tokens(个人访问令牌) =&gt; tokens (classic) =&gt; Generate new token =&gt; 设置 token过期时间(我建议设置成 永远 省事, github不建议😂)和权限范围(建议都选上省事)=&gt; 点击 Generate token =&gt; 复制令牌去修改本地仓库的 remote 就行了

讯享网

将&lt;your_token&gt;换成你自己得到的令牌。是你自己github的用户名,是你的项目名称.即可执行 pull/push 操作。

标签

这个我不常用(适合发版的时候打标签),作用基本和commit一样,目的是为了你要回滚是可以选择便于记忆的自定义tag,而不是繁琐的 .

 

分支管控 +

分支是啥呢,分支就是分支,emm…,废话文学😅

指向 commit 的指针。分支名便于记忆。

讯享网

分支合并

分支合并即将两个分支的代码进行合并,如果 a 分支要与 b 分支合并,如果以 b 分支为主,则先切到 b 分支在合并,

合并前需要保证工作区没有未提交的代码

 

代码暂存

git stash 后代码就会复原为最近一次的提交(commit)或者暂存(stash)

本质上是将工作区的代码存放至暂存区,但是 时不会提交

讯享网

代码回滚

重置当前 到指定的状态 官网

白话: 回退版本,可以指定退回某一次提交的版本,也就是撤回暂存区的的提交代码(add之后)

 

默认参数是 –mixed , 工作区代码被保留,暂存区和本地仓库被清空。

举个例子,现在依次有 a, b, c 三个提交(c最新),我重置到 a(),那么现在编辑器(工作区)的代码 还是最新 c 的代码,但是 bc 的提交的代码此时处于 未提交状态(git status 查看),可以选择性的增删,然后 提交即可,也可以使用 丢弃掉。

注意谨慎使用 –hard 参数,它会删除回退点之后的所有提交和所有没有commit的内容,并且会修改commit历史。这可能更像我们理解的回滚,但可能不是我们想要的回滚,我们可能需要回滚后 保留回退点之后的代码(在工作区,git status 可查看到未提交),那么就需要 –soft

讯享网

[HEAD] 有两种表示方法(window 上 符号好像有些问题):

  1. 当前版本, 上一次, 上上次,…
  2. 当前版本, 上一次, 上上次,…

更改提交

可以对某一段线性提交历史进行编辑、删除、复制、粘贴;因此,合理使用rebase命令可以使我们的提交历史干净、简洁!

进入编辑状态: i

退出并保存:esc + : + wq

参数就是支持交互式的去操作,推荐,

 
变基

对于变基操作 (当前分支为current), 找到 current 与 branch 分支 共同的提交 a, 如果找不到 则为各自分支的第一个提交,

将 current 分支上 a到最新的所有提交 追加至 branch 分支上 a到最新的所有提交。然后将整个提交追加到a上组成的提交历史。

它和merge一样都是合并其他分支的代码,不一样的是: 会产生一条新的 ,且有一次冲突合并(如果存在), 则不会产生新的提交记录,且不会有 分支合并 历史,且需要至少一次(取决于变基的当前分支有多少新的提交)的冲突(如果存在)合并。

举个例子, 此时有如下提交

有如下提交

可以看到公共的提交 是从 开始的

然后在 上变基

讯享网

然后 解决 冲突继续 rebase,此时注释中的 pick 可以打开(去掉#),也就是说需要保留该提交。

如果你此时后悔了,可以用 git rebase –abort 取消你的变基操作

 

接着修改提交信息,默认是 的最后一次提交,我改了之后然后保存.

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b1moghTH-1685108386691)(file:///Users/ethanyin/Library/Application%20Support/marktext/images/2023-05-07-11-24-46-image.png?msec=1685108372355)]

看到原来 上新的提交没有了,产生了所有新的 commit(变了,commit注释没变,解决冲突时我改了其中一个提交信息)

变基成功后, 上新的四个提交成功的基于(跟在) 了 的最新的提交(后), 原来是基于(跟在)共同的提交 (后)。

更改提交历史

当输入 后,进入编辑页面,最新在下面

三次提交信息 前面都有pick,这里的pick是一个命令,可以改成命令集中(reword/edit/squash…)任意命令,来执行相应的操作。

在上面图中我要更改最近一次和第三次的提交信息,退出保存后,会提示两次交互,依次让你去更改提交信息,两次都保存好后就算完成了。

提交信息得到了改变

git rebase 解决的冲突,就用 添加至暂存区, 不能commit, 然后

rebase的几个命令解释

  • pick (p: 保留该commit
  • reword (r: 保留该commit,但仅需要修改该commit的注释
  • edit (e: 保留该commit, 但我要停下来修改该提交(不仅仅修改注释)。a-&gt;b-&gt;c 修改a提交,

    b,c 提交在rebase之后将不复存在,会被合并。但是a提交存在(区别于后面两个命令)

  • squash (s: 将该commit合并到前一个commit
  • fixup (f: 将该commit合并到前一个commit,但不要保留该提交的注释信息
  • exec (e: 执行shell命令
  • drop (d: 丢弃该commit

仔细观察的话,经过 之后 修改的提交, commit id 都发生了变化(即使那些未修改的提交)。

假如有这样的情况,同事在master(目前有 a, b, c三个提交, c是最新)切了一个 feature 分支,然后我在 master 分支改了a提交 (rebase 方式),那么a,b,c的commit-id 就变了, 同事这会开发完了新功能,我就将 feature 分支合并到master,commit id 不同就会将 feeature 分支的 a,b,c处理为新的提交。

结果就会有 三个重复的提交:

a (master,修改的), b(master),c(master),a(feature),b(feature),c (feature)

这可不是我想要的,所以切记

只对尚未推送或未分享给别人的本地修改执行变基操作清理历史, 从不对已推送至别处的提交执行变基操作

关于rebase,限于篇幅没有把我实践的所有情况列出来,如果需要了解的更全面一些,这里有一些参考:

git rebase的两种用法(最全)_小垚尧的博客-CSDN博客_git rebase

回退代码

将目前的提交回滚至指定提交,并生成一条提交记录

讯享网

举个例子:我要回退最新的提交,目前有四条提交历史

执行 , 进入 vi 界面, 默认提交信息是 (如果修改 按 i 编辑,然后esc退出),然后 退出保存,再次查看历史

可以看到多了一条新的 commit, 此时工作区的代码即为 上上次()提交的代码!

回退多个提交:

在回退的两条注释后面我追加了 commit。工作区代码为最近第三次提交的代码!

如果有冲突就需要合并,合并完继续 就 , 直至所有提交都回退完

再举个例子:回退原来的某一次错误提交

摘取提交

给定一个或多个现有提交,应用每个提交引入的更改,为每个提交记录一个新的提交。这需要您的工作树清洁(没有从头提交的修改)。

 

将已经提交的 commit,复制出新的 commit 应用到当前分支里,文件的增删都会更新,产生冲突时, cherry-pick 的提交回作为 incoming change,在vscode里操作很方便。

举个例子,这里有三个提交。

摘取最近第三次提交()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d4Frndp3-1685108386691)(file:///Users/ethanyin/Library/Application%20Support/marktext/images/2023-05-07-20-35-55-image.png?msec=1685108372382)]

结果就是增加了一次提交( 和 的合并)

另外注意:最后的commit中, 与 增加的文件会存在,删除的文件不会存在!相当于 。


这个文件控制着 Git 对哪些文件忽略

讯享网

从0-1

本地仓库怎么和线上仓库做关联呢?分以下几种情况

  • 线上本地都没有(①)
  1. 本地新起一个项目 app,
  2. 线上仓库新建一个(建议同名)同名项目 app。
  3. 本地配置远程关联的url(参考 ), 然后 强推。
  • 线上有了,本地没有(②)

参考 ① 步骤2,3

  • 本地没有线上有(③)

    克隆到本地即可(参考 )

  • 线上和本地都有,只是没关联起来(④)

    本地配置远程关联的url(参考 ),再 pull(fetch + merge) 下来即可(另外如果有冲突需要解决掉), 需要推的时候建立 关联 。

丢弃工作区的更改

现在我编辑器(工作区)写了一些代码,但是我不想要了,此时没有提交到(git add),name直接丢弃掉就好了

 

提交信息错了,我想改

参考

或者 修改最后一次提交

更改提交顺序 场景在哪??

还是 .

小技巧:非(vi/i)模式,dd 剪切(光标),p粘贴,粘贴至光标的下一行

合并多次提交,使提交记录更干净

结合命令

删除 git 仓库

讯享网

Git - Reference

Git速查手册(第三版) | AnSwEr’s Blog

一份工作4年前端的Git备忘指南

小讯
上一篇 2025-05-13 19:27
下一篇 2025-06-03 08:47

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/139314.html