git入门操作(2)

文章目录

git入门操作(2)

紧接着上一期,如果没有看过上一期的朋友,可以点进我的主页,找到我的 git 专栏里面,有从安装到使用一步一步的教程。

git diff 查看差异

cpp 复制代码
git diff :显示工作目录与暂存区之间的差异。即,显示自上次 git add 或 git commit 以来,你对文件所做的所有未暂存的(unstaged)更改

git diff --cached :显示暂存区与最新提交之间的差异。这可以帮助你查看所有已暂存(staged)但尚未提交的更改。

git diff <commit_id1> <commit_id2>:显示两次 commit 的不同

git diff <branch1> <branch2>:查看两个分支的不同
git diff

比如,当我现在 add 了一个test.txt,然后再对 test.txt进行修改,就可以就行对比:

修改加入 aaa

对比:

然后我commit,再 add aaa修改到暂存区,这个时候,暂存区和仓库是不一样的,就可以使用

git diff -cached 比较

gitignore忽略文件

.gitignore 文件是 Git 版本控制系统中的一个配置文件,用于指定 Git 应该忽略哪些文件或目录,不对它们进行跟踪或提交。这对于避免将编译生成的中间文件、操作系统特定的配置文件或敏感信息(如密码、密钥)等不必要的内容纳入版本控制非常有用

1.在代码仓库创建这个文件
2.添加对 log 文件过滤

然后我们添加一个 test.log 文件查看是否生效:

使用 git status 查看有没有创建的 test.log 文件,如果没有就成功了

通过合理使用 .gitignore 文件,你可以保持 Git 仓库的整洁和安全性,避免将不必要的文件或敏感信息纳入版本控制。

连接远程仓库与ssh配置

这里我使用 gitee 为例子:

在 gitee 中创建仓库,配置 ssh

cpp 复制代码
ssh-keygen -t rsa //创建公钥
cat ~/.ssh/id_rsa.pub //获取公钥

把获取到的公钥加入到 gitee中去,如果不是第一次配置公钥,在这之前要配置config到自己密钥,也就是在用户/ssh/config中写配置

然后就可以使用 ssh 的方式进行 clone 远程仓库了

远程仓库和本地仓库关联

其实这里就是反过来,先创建远程仓库,然后使用命令把本地的仓库和远程仓库关联起来,本地仓库可以和远程仓库名称不一样。

首先在GitHub或者上创建一个新仓库,然后使用git remote add命令将本地仓库与远程仓库关联。接着,通过git push命令将本地仓库的内容推送到远程仓库。最后,通过git pull命令将远程仓库的修改拉取到本地仓库。git remote -v查看远程仓库和本地仓库关联。

你的本地历史和远程历史不相关。可以使用以下命令来强制合并:git pull origin master --allow-unrelated-histories。这将允许合并不同的历史。然后再尝试推送。

步骤

  • 📂 在GitHub上创建新的仓库并复制其地址。
  • 💻 使用git remote add origin [URL]命令将本地仓库与远程仓库关联。
  • 📤 使用git push -u origin main命令将本地仓库的内容推送到远程仓库。
  • 📥 使用git pull origin main命令将远程仓库的修改拉取到本地仓库。
  • 🛠️ 注意git pull会自动合并远程仓库的修改,如果存在冲突需要手动解决。

分支基本操作

Git中分支的概念及其基本操作,包括分支的创建、切换、合并和删除。通过实际操作演示了如何在不同分支上进行开发和测试,并最终将开发分支合并到主线分支中。

步骤
  • 🌳 分支的概念:分支是代码库中的不同版本,可以独立存在并有自己的提交记录,适合团队协作和开发管理。
  • 🔄 分支的基本操作 :包括创建分支(git branch)、切换分支(git checkoutgit switch)、合并分支(git merge)和删除分支(git branch -d)。
  • 🛠️ 实际应用场景:多个开发人员可以在各自的分支上进行开发,最后合并到主线代码库中,确保项目的稳定性和高效协作。
  • 🚫 避免歧义 :Git 2.23版本引入了git switch命令,专门用于切换分支,避免与恢复文件操作的歧义。
命令:
cpp 复制代码
git branch :查看分支
git switch :切换分支
git branch 分支名  :创建分支
git merge <branch>:合并分支(把<branch>分支合并到当前分支)
git branch -d 分支名:删除分支


合并冲突

解决分支合并时的冲突。

分支合并逻辑
  • 如果两个分支没有重合的部分,Git 会自动完成合并;
  • 如果两个分支修改了同一行代码,Git 会产生冲突,需要手动解决;
  • 可以使用 git statusgit diff 命令查看冲突文件和具体内容;
  • 手动编辑文件,留下想要的内容,再提交commit;
  • 可以使用 git merge --abort 命令终止合并。
1.新建分支 dev,并且在 main分支的test.txt 中故意和 dev 分支中 test.txt 的同样内容修改成不一样

在main中修改 test.txt 为 111

在 dev 中修改 test.txt 为 222

切换回 main 合并 dev:

回退和rebase

Git revert(回退)

Git revert用于撤销某个特定的提交,并创建一个新的提交来记录这个撤销操作。与reset操作不同,revert不会改变历史提交的顺序或删除任何提交,而是通过在提交历史中插入一个新的提交来"反转"之前的提交。这使得revert成为一种相对安全且不会破坏提交历史完整性的回退方式。

使用场景:

当你需要撤销某个特定的提交,但又不希望删除该提交或改变提交历史时。

当你希望在保留提交历史的同时,修复某个提交中的错误或不当更改。

Git rebase

Git rebase用于将一个分支的更改重新应用到另一个分支上,从而创建一个更线性和清晰的提交历史。通过rebase,你可以将分支的提交历史"移动"到另一个基准点上,使得整个项目的历史更加整洁。

使用rebase的常见场景包括:

合并分支:

当你想要将一个分支的更改合并到另一个分支上时,可以使用rebase来避免产生额外的合并提交。通过rebase,你可以将待合并分支的更改"重放"到目标分支上,从而在目标分支上形成一个干净的提交历史。

更新分支:

在多人协作开发中,当主分支(如master或main)上有新的提交时,你可以使用rebase来将你的分支与主分支同步。这样做的好处是,你的分支将保持线性提交历史,而不会包含与主分支合并产生的额外提交。

清理提交历史:

rebase还可以用于清理提交历史,例如合并多个小的提交或消除不必要的合并提交。这有助于使项目的提交历史更加清晰和易于理解。

需要注意的是,使用rebase可能会改变提交的哈希值。因此,在已经推送到远程仓库的分支上使用rebase时,需要谨慎处理,以避免影响其他开发者的工作。通常建议,在推送更改之前先使用rebase来保持提交历史的线性,但在推送之后则应避免使用rebase来修改已经共享的提交历史。

总的来说,revert和rebase都是Git中非常有用的工具,它们各自有不同的用途和适用场景。在选择使用哪个工具时,需要根据具体的需求和上下文来做出决策。

相关推荐
云围6 小时前
Gitlab 官方推荐自动化cache服务器Minio的安装
git·unity·ci/cd·自动化·gitlab·devops
dzq1986 小时前
Hexo提交部署命令与Git Bash Here控制终端中按下Ctrl+C无法中断hexo s的解决办法
运维·git·hexo·部署博客·hexo s·ctrl+c·源码推送
NiNg_1_23416 小时前
Git提交代码完整流程
git
洛卡卡了1 天前
Git 常用命令与开发流程总结
大数据·git
WeeJot嵌入式1 天前
git提交
git
瑕、疵1 天前
使用Git进行版本控制的最佳实践
git
林戈的IT生涯1 天前
Git创建和拉取项目分支的应用以及Gitlab太占内存,如何配置降低gitlab内存占用进行优化
git·gitlab·创建和拉取项目分支·gitlab内存占用问题·gitlab内存占用优化
Ten peaches1 天前
Git_GitLab
git·gitlab·github
运维老司机2 天前
Jenkins+maven+git(gogs)自动化构建打包+部署(项目实战)
git·jenkins·maven
一杯原谅绿茶2 天前
用git上传项目到GitHub(最简单的操作)
git·github