欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > 实习技能记录【3】-----Git操作

实习技能记录【3】-----Git操作

2025/4/18 21:03:59 来源:https://blog.csdn.net/m0_46451722/article/details/147074423  浏览:    关键词:实习技能记录【3】-----Git操作

1. Git是什么

Git 是一个分布式版本控制系统 (Distributed Version Control System, DVCS)。 它的核心目标是跟踪文件的变化,让你能够随时记录、回溯、协作和管理你的项目。

2. 介绍

2.1 Git 工作区、暂存区、本地仓库介绍

区域名称英文名说明相关命令
工作区Working Directory你当前编辑的目录,包含所有可见的项目文件git status, git checkout
暂存区Staging Area / Index暂时保存你准备提交的文件修改(git add 后进入)git add, git reset
本地仓库Local Repository提交后的版本快照,存储于 .git 目录中git commit, git log
远程仓库(可选)Remote RepositoryGitHub、Gitee 等远程平台上的仓库,用于多人协作git push, git pull

2.2 文件生命周期(状态流转)

编辑文件 → git add → git commit → git push
工作区     暂存区       本地仓库      远程仓库

2.3 状态变更图示(简单流程)

[工作区] --git add--> [暂存区] --git commit--> [本地仓库] --git push--> [远程仓库]↑                               ↓                              ↑修改                         git reset HEAD file             git pull↑                                                           ↓
恢复(checkout)                                               拉取更新

3. 操作

指令说明示例
git status查看当前工作区和暂存区状态git status
git add <file>将文件加入暂存区,准备提交git add main.c
git add .添加当前目录下所有更改文件到暂存区git add .
git diff查看工作区和暂存区之间的差异(未暂存的修改)git diff
git diff --cached查看暂存区和最后一次 commit 的差异(已暂存未提交)git diff --cached
git commit -m "msg"提交暂存区内容到本地仓库,并附带提交说明git commit -m "fix bugs"
git log查看提交历史记录git log
git reset HEAD <file>从暂存区移除文件(但保留工作区更改)git reset HEAD main.c
git checkout -- <file>撤销工作区修改,恢复成最后一次 commit 的内容git checkout -- main.c
git reset --soft HEAD~1撤销最近一次 commit,保留更改在暂存区git reset --soft HEAD~1
git reset --mixed HEAD~1撤销最近一次 commit,保留更改在工作区(默认方式)git reset --mixed HEAD~1
git reset --hard HEAD~1撤销最近一次 commit,且清除所有更改(慎用!)git reset --hard HEAD~1
git log --oneline简洁查看提交历史(每条一行)git log --oneline
git reflog查看 HEAD 引用日志,找回丢失的提交git reflog
git stash暂存当前所有修改(保存工作进度)git stash
git stash pop恢复最近一次 stash 并删除git stash pop
git stash apply应用最近一次 stash(不删除)
git rm删除工作区和暂存区的文件git rm file

4. 忽略文件

.gitignore
以下文件需要被忽略:

  • 系统或者软件自动生成的文件
  • 编译产生的中间文件和结果文件
  • 运行时生成日志文件、缓存文件、临时文件
    涉及身份、密码、口令、秘钥等敏感文件

匹配规则:

按行从上到下匹配
# 代表注释
* 匹配多个字符
? 匹配单个字符
[ ]表示匹配列表中的单个字符,比如:[abc] 表示a/b/c
** 表示匹配任意的中间目录中括号可以使用短中线连接,比如:[0-9]表示任意一位数字,[a-z]表示任意一位小写字
! 表示取反

示例

忽略所有的 .a 文件
但跟踪所有的 lib.a,即便你在前面忽略了.a 文件
!lib.a
只忽略当前目录下的TOD0 文件,而不忽略subdir/ToD0
/TOD0
# 忽略任何目录下名为 build 的文件夹
build/
忽略 doc/notes.txt,”但不忽略 doc/server/arch.txt
doc/*.txt
忽略 doc/目录及其所有子目录下的·pdf 文件
doc/**/*.pdf

👿注意,github官网有不同语言的gitignore模板,可以直接使用

5. SSH配置

远程仓库和本地仓库同步的方式
https已不再使用
推荐使用ssh
ssh公钥和密钥的关系:

+-----------------+      +-----------------+
|     你的电脑     |----->|     远程服务器   |
| (拥有私钥)      |      | (拥有公钥)      |
+-----------------+      +-----------------+

配置密钥流程
Windows:

1.ssh-keygen -t rsa -b 4096 -c "邮箱"
生成的密钥一般在:C:\Users\<你的用户名>\.ssh\
2.然后将rsa.pub内的内容添加到github上
3.测试命令行输入:ssh -T git@github.com
4.若通过则可以直接使用git clone ssh地址
5.不通过需要看下方提示

Linux:

cd .ssh
ssh-keygen -t rsa -b 4096

🤓若无法连接,可以尝试:
~/.ssh/下创建config文件
添加内容:

# github
Host github.com
HostName ssh.github.com
Port 443

6. 远程仓库和本地仓库关联

1.关联本地仓库和远程仓库git remote add origin <远程仓库的 URL>1.1 查看本地关联的仓库git remote -v
2.推送本地仓库git push -u 远程仓库别名 本地分支:远程分支
3.拉取远程仓库自动合并git pull手动合并git fetch

7. 分支

Git 的分支(branch)功能允许你在版本库中创建多个开发线索,使你可以在不影响主线(如 main )的情况下开发新功能、修复 bug 等。

✅ 主要用途

  • 并行开发不同功能
  • 实验新特性
  • 快速 bug 修复
  • 提高协作效率

🛠️ 常用 Git Branch 操作

1.创建新分支git branch 分支名
2.切换分支git checkout 分支名# 或 Git 2.23+ 版本git switch 分支名
3.查看分支列表git branch
4.合并分支git switch 分支名
5.删除分支git branch -d 分支名 (已合并)git branch -D 分支名 (未合并)

8. 解决分支冲突

想象一下你和你的团队成员正在同一个 Git 仓库并行开发不同的功能或修复不同的 bug。每个人都在自己的分支上工作,这样可以保持主线代码的稳定,并且让不同的开发任务相互隔离。
当以下两种情况同时发生时,就可能产生分支冲突:

  • 不同的分支修改了同一文件的相同部分。 这意味着你和你的同事可能在同一文件的同一行或相邻的几行代码上做了不同的更改。
  • 其中一个分支的更改被合并(git merge)或变基(git rebase)到另一个分支时。 Git 在尝试自动合并这些不同的修改时,发现无法确定最终应该保留哪个版本

简单来说,分支冲突就是 Git 在合并或变基分支时,遇到对同一文件相同部分的冲突修改,不知道应该采纳哪个版本而需要人为介入解决的情况

情景

  1. master分支修改了main1.txt 第一行
  2. dev分支修改了main1.txt 第一行
  3. master commit 修改
  4. dev commit 修改
  5. master merge dev
  6. 冲突产生,需要手动修改和保留,合并冲突内容
  7. 添加暂存区
  8. 提交修改

若不想继续合并,执行git merge --abort终止合并过程

回退和rebase(变基操作)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词