【git】简洁实用教程
创始人
2024-04-18 19:27:09
0

虽然之前有git的笔记了,但是操作和命令太多,有点冗余,下面整理出最常见的一些场景和git需求。

零、Git速查表

在这里插入图片描述

好习惯:每次提交后和开发代码前,都应该pull下
在这里插入图片描述

常见命令:
git clone拉取服务器代码,如果是新建项目,可以用git init初始项目
git config配置邮箱密码
git branch算法在分支开发完后,合并到master主分支
git checkout切换分支
git status查看文件变动,如改变readme文件内容
git add提交文件到暂存区,会显示Changes to be committed: (文件已提交到暂存区)
git push将本地代码推送到服务器,比如在github中点击 Branch:master 下拉按钮能看到对应分支的提交;另外配置文件.gitignore内容不会被推送到服务器上
git pull将服务器代码拉取到本地

注意:如果线上代码做了变动,而你本地的代码也有变动,拉取的代码就有可能会跟你本地的改动冲突,一般情况下 Git 会自动处理这种冲突合并,但如果改动的是同一行,那就需要手动来合并代码,编辑文件,保存最新的改动,再通过 git add . 和 git commit -m ‘xxx’ 来提交合并。

分支:git中origin是远程仓库的别名,也可叫为main。master分支是最稳定的(平时不能直接在上面操作);短期分支可以不用上传到远程,当完成bug修复或者需求开发后,才需要合并到主分支上

在这里插入图片描述

  • git add是个多功能命令,可以理解为“精确地将内容添加到下一次提交中”而不是“将一个文件添加到项目中”要更加合适。:
    • 可以用它开始跟踪新文件,
    • 把已跟踪的文件放到暂存区,
    • 合并时把有冲突的文件标记为已解决状态等。
  • 暂存区和非暂存区:
    • Changes to be committed的即在暂存区,
    • Changes not staged for commit的即在非暂存区。
  • 跳过使用暂存区域:在提交的时 git commit -a
  • 重置账号密码:git config --system --unset credential.helper
  • 如果要删除已经提交到远程服务器中的项目的部分文件:
git rm -r -n --cached 文件/文件夹名称 
加上 -n 这个参数,执行命令时,是不会删除任何文件,而是展示此命令要删除的文件列表预览
// 确认无误后删除文件
git rm -r --cached 文件/文件夹名称
//提交到本地并推送到远程服务器
git commit -m "提交说明"
git push origin master

一、git的三个分区

在这里插入图片描述

  • 肉眼可见的是work dir工作目录:
    • 在此执行git add后会把指定文件添加到stage/index area暂存区中,
    • stage/index area存在修改后,会把修改存到commit history区(HEAD指针指向的位置)。每个commit都有唯一的一个hash值。
  • 将work dir的修改提交到history区:先git add然后git commit就行了,或者一个快捷方法是使用命令git commit -a。
  • 只要不乱动本地的.git文件夹,任何修改只要提交到history中都不会消失,可以通过git reflog查看操作记录。
    • 所以如果因为HEAD指针的回退,导致有的commitgit log命令中无法看到,可以通过git reflog查看它们的hash值(如下图所示)。

在这里插入图片描述

二、把stage中的修改还原到work dir中

场景:修改work dir中的两个文件a和b后(同时也添加到stage),又对a文件修改,想把a还原为stage中的a文件。
方法:git check a.txt;如果很多被修改的文件很多,且都需要还原,可以使用git checkout .,该命令不会删除后来在work dir中新添加的文件。

三、将history区的文件还原到stage区

场景:写了几个代码文件后一股脑使用git add .添加到stage中,突然想起a.txt没写完 想从stage中移除 写完再提交。
方法:git reset a.txt;这样后面git commit就不会把a文件提交到history区了。

四、将history区的历史提交还原到work dir中

场景:从github上clone了一个项目,乱改一通后跑不通,后悔就想改回最初状态
方法:git checkout HEAD .;work dir和stage中所有的「修改」都会被撤销,恢复成HEAD指向的那个history commit。

慎重:这个操作会将指定文件在work dir的数据恢复成指定commit的样子,且会删除该文件在stage中的数据,都无法恢复,所以应该慎重使用。

五、合并多个commit

场景:本地从17bd20cHEAD有多个commit,想把它们合并成一个commit后再推送到仓库。
方法:git reset 17bd20c后照常git add .和commit操作;即将HEAD移动到17bd20c这个commit中。

六、解决冲突

直接使用IDE的可视化git工具,比git diff方便。

七、.gitignore文件不生效咋办

.gitignore只能忽略那些原来没有被追踪的文件,如果某些文件已经被纳入版本管理中,修改.gitignore会不起作用。

方法:先将本地缓存清除,改成未被追踪状态,然后提交。

git rm -r --cached .
git add .
git commit -m 'update .gitignore'
git push -u origin master

显示正在追踪的文件:

git ls-tree --full-tree --name-only -r HEAD | tree --fromfile .

小练习:

在这里插入图片描述

相关内容

热门资讯

银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...