OS14.【Linux】git的简单使用

目录

1.git的简单理解

2.创建仓库

3.命令

安装git

git clone

.git目录

配置git

git add .

git commit

git push

git log

git status

4.解释.gitignore隐藏文件

验证是否能忽略某些文件种类 


1.git的简单理解

git由linux之父Linus Torvalds开发,官方网站https://git-scm.com/

简单来说是进行版本控制,可以用于手动保存项目的所有版本,用于应对不同的需求:要哪个版本就给哪个版本

按官方的定义来说是Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency. 

一个免费开源的分布版本控制系统,能以快速高效地处理大大小小的项目 

git可以在本地管理,也可以在远端管理,即git是具有网络功能版本控制器,服务端和客户端是一体的

与git有关的代码托管网站:

1.https://github.com/

2.https://gitee.com/

2.创建仓库

以gitee为例,

注册账户后,主界面右上角的点开,有一个新建仓库选项

仓库名称必须填写,选开源或者私有,建议初始化仓库

.gitignore隐藏文件的作用下文会讲,是否添加开源许可证根据自己的需要,

 点确定后会生成一个仓库

3.命令

安装git

sudo yum install git  #CentOS RedHat
sudo apt install git  #Ubuntu

git clone

作用:远端仓库克隆(clone)到本地,即复制一份

现网页端上传一个名称为test.txt的文件,里面写入"teststring"字符串,用于测试

这里使用https协议,点击,复制https链接

转到服务器,git clone后跟上这个链接

(有的情况下需要输入账户名密码) 

test仓库已经克隆到本地了

看看test.txt的内容是正确的

除了有test.txt文件,还有一个隐藏文件.gitignore和一个隐藏目录.git

.git目录

里面存储了所有与版本控制相关的信息,包括提交历史、分支信息、配置文件等,建议不要手动修改

配置git

必须填写邮箱和账户名,和远端的要保持一致,这样有利于对代码溯源

git config --global user.email "you@example.com"
git config --global user.name "Your Name"

git add .

作用:将代码提交到本地仓库

例如新建一个test.c放到刚才下载好的目录中,里面写入"testcode"字符串

使用以下命令将代码提交到本地仓库(具体来说是将文件的变更添加到暂存区,等待push到远端)

git add [文件名] #也可以使用git add .一次性提交当前目录及其子目录下的文件

gitee远端还没有test.c,因为还没有推送到远端

git commit

git add后,必须提交改动到本地,这样改动才会被记录下来否则git push是无效的

-m选项是添加提交信息,提交信息不可以省略

 

git push

作用:将本地分支的更改推送到远端仓库

首次使用需要配置信息,正确填写邮箱密码

之后成功上传到gitee远端仓库上

注意:对代码进行增删查改,也要git add . git commit -. “xxxx” ,填写代码的变化

git log

作用:显示完整的提交日志

git status

作用:主要功能包括查看未提交的修改、未跟踪的文件、分支信息及与远程仓库的同步状态

例如本地仓库再上传一个非空文件test.bin,之后使用git status查看状态

git提示test.bin没有被纳入仓库,可以使用git add .提交到本地仓库

git add .执行后,执行git status会提示test.bin等待被提交

执行git commit后:

再次执行git status:

(注:上图的origin指的是远端) 

执行git push后:

已经提交到远端了: 

 

再次执行git status,显示没有需要提交的

4.解释.gitignore隐藏文件

gitignore=git+ignore,即.gitignore中的记录的文件种类都不会被上传

查看默认配置情况下的.gitignore中的内容:

# Prerequisites
*.d

# Compiled Object files
*.slo
*.lo
*.o
*.obj

# Precompiled Headers
*.gch
*.pch

# Compiled Dynamic libraries
*.so
*.dylib
*.dll

# Fortran module files
*.mod
*.smod

# Compiled Static libraries
*.lai
*.la
*.a
*.lib

# Executables
*.exe
*.out
*.app

验证是否能忽略某些文件种类 

以Executables中的*.app为例,指的是所有以app为后缀的文件都会忽略,现在本地仓库下创建一个test.app的非空文件,发现并没有上传到远端仓库,说明.gitignore起到了忽略特定种类文件的作用

### 处理和修复 `.git` 仓库泄露的安全问题及应对措施 #### 1. 删除公开暴露的 `.git` 文件夹 如果发现 `.git` 文件已经对外部网络可见,则应立即删除或隔离该文件夹,防止进一步的信息泄漏。可以通过以下命令确认是否存在 `.git` 文件夹并将其移除: ```bash rm -rf /path/to/exposed/.git ``` 此操作可以有效阻止攻击者访问敏感的历史提交记录和其他元数据[^1]。 #### 2. 使用专用工具扫描潜在风险 针对已知漏洞,建议采用自动化扫描工具来评估当前环境中的安全隐患。例如,GitHack 是一款专门设计用来检测和利用 `.git` 泄露问题的开源软件,能够帮助重现可能被黑客使用的攻击路径[^2]。通过模拟真实世界的威胁场景,企业可以更好地理解其系统的脆弱性所在,并采取适当行动加以改进。 #### 3. 定期执行安全审计与更新策略 为了长期维护项目安全性,应该建立一套完善的管理制度,其中包括但不限于以下几个方面: - **启用防火墙规则**:限制不必要的外部连接请求到达内部服务器; - **配置 Web 应用程序防护系统 (WAF)** :拦截恶意流量尝试获取私密资源; - **实施最小权限原则**:只为必要人员授予读写权限至版本控制系统; 此外,还应当安排周期性的渗透测试活动以及代码质量评审会议,及时修补新发现缺陷[^3]。 #### 4. 教育员工提升意识水平 除了技术手段之外,人的因素同样重要。因此有必要开展针对性培训课程提高全体成员对于保护知识产权重要性的认识程度,强调遵循最佳实践的重要性,比如不随意上传未经清理过的本地副本到公共存储位置等等行为准则。 ```python import os def secure_git_repo(repo_path): """A function to demonstrate securing a git repository.""" try: if os.path.exists(os.path.join(repo_path, '.git')): print("Potential exposure detected!") # Example action: Remove the exposed .git directory. os.system(f'chmod -R 0700 {repo_path}/.git && chown -R root:root {repo_path}/.git') return True else: print(".git folder not found.") return False except Exception as e: print(f"An error occurred while checking security status of repo at path '{repo_path}': {e}") secure_git_repo('/var/www/html/myproject') # Replace with actual project location ``` 上述脚本提供了一个简单的例子展示如何调整 Linux 上面 Git 存储库权限设置从而减少遭受未经授权访问的可能性。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangcoder

赠人玫瑰手有余香,感谢支持~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值