Git学习记录

文章目录

  • [1. 常见指令](#1. 常见指令)
    • [1.1 配置](#1.1 配置)
    • [1.2 创建](#1.2 创建)
    • [1.3 查看关联的远程仓库列表](#1.3 查看关联的远程仓库列表)
    • [1.4 添加和提交文件](#1.4 添加和提交文件)
    • [1.5 查看记录](#1.5 查看记录)
    • [1.6 回退和查看差异](#1.6 回退和查看差异)
    • [1.7 删除文件](#1.7 删除文件)
    • [1.8 分支](#1.8 分支)
    • [1.9 操作远程仓库](#1.9 操作远程仓库)
  • [2. 相关概念](#2. 相关概念)
  • [3. 工作流模型](#3. 工作流模型)
  • [4. 常见问题](#4. 常见问题)
    • [4.1 AS上配置Git](#4.1 AS上配置Git)
    • [4.2 合并冲突](#4.2 合并冲突)
    • [4.3 merge和rebase的区别](#4.3 merge和rebase的区别)
    • [4.4 git log和git reflog的区别](#4.4 git log和git reflog的区别)
    • [4.5 git fetch和git pull 区别](#4.5 git fetch和git pull 区别)
    • [4.6 在Push代码时遇见冲突时用Git Merge还是Git Rebase?](#4.6 在Push代码时遇见冲突时用Git Merge还是Git Rebase?)

1. 常见指令

1.1 配置

git config --global user.name "Tony"

git config --global user.email "tony@gmail.com"

1.2 创建

git init

初始化一个 Git 仓库,它将创建一个 .git 文件夹,后续的操作记录都会在此文件夹里,相当于 Git 的数据库。

1.3 查看关联的远程仓库列表

git remote -v

xml 复制代码
$ git remote -v
origin  https://gitee.com/XX/as_test.git (fetch)
origin  https://gitee.com/XX/as_test.git (push)
当你执行 git fetch 或 git pull 时,Git 会从这个 URL 拉取最新的代码。当你执行 git push 时,Git 会将你的代码推送到这个 URL 对应的远程仓库。
xml 复制代码
1.增加一个远程仓库
	git remote add 名称 远程仓库url
    git remote add origin 远程仓库url
2.删除
	git remote remove origin
3.提交到远程仓库
	git push origin master  用于将本地分支(这里是 master 分支)的更新推送到远程仓库(origin) 
4.clone远程源
	git clone 远程源地址

1.4 添加和提交文件

git add (工作区 --> 暂存区)
git commit -m "描述" (暂存区 --> 本地仓库)
git commit -a -m (-a参数可以同时完成两部操作)

1.5 查看记录

git status
git log (--oneline) 简洁显示
git log after/before 2025-7-18 查看指定时间的日志
git ls-files 查看暂存区的内容
git reflog命令:可以叫做显示可引用的历史版本记录。

1.6 回退和查看差异

git reset (默认为mixed)

小技巧:HEAD~数字 指定当前第几个版本

xml 复制代码
    	# 回退到上一个版本:
        	git reset --hard HEAD^
           	git reset ----hard HEAD~
        # 回滚到上三个版本:
        	git reset --hard HEAD^^^
            git reset --hard HEAD~3


git diff 默认查看工作区和缓存区的区别
git diff HEAD 工作区和版本库的区别
git diff --cached 暂存区和版本库的区别

git diff id1 id2 + 文件名 比较两个特定版本的特定文件的区别

1.7 删除文件

git rm 文件名
一定要记得git commit 这样才能版本库中删除

1.8 分支

xml 复制代码
1.创建分支
	git branch 分支名
    git branch -b 分支名  # 创建并切换
2.切换分支
	git checkout 分支名 
	由于checkout可能存在歧义,新版本使用switch
4.删除分支
	git branch -d 分支名   # 加-f是强制删除,不加-f,子分支没有和主分支合并是不能删除的。
5.合并分支
	git merge 分支名  # 将分支名合并到当前的分支
	git rebase # 变基
6.查询当前分支
	git branch
7.查看分支图
	git log --graph --oneline
8.删除分支
	git branch -d 分支名 (该分支已经被合并到别的分支上)
	git branch -D 分支名(强制删除分支)

1.9 操作远程仓库

xml 复制代码
git push 使用本地的对应分支来更新对应的远程分支
$ git push <远程主机名> <本地分支名>:<远程分支名>
$ git push origin master  将本地的master分支推送到origin主机的master分支。如果后者不存在,则会被新
xml 复制代码
git pull 获取并合并其他的厂库,或者本地的其他分支。
git pull <远程主机> <远程分支>:<本地分支>
git pull origin master:my_test 将origin厂库的master分支拉取并合并到本地的my_test分支上
git pull origin master  如果省略本地分支,则将自动合并到当前所在分支上
git fetch 只是从远程库下载最新代码,但并不自动合并到本地分支。

2. 相关概念

  • Git 文件的三个状态
  • Git 文件的生命周期图

3. 工作流模型

GitFLow模型

main主分支

hotfix 线上版本bug修复

release 版本发布分支

dev 开发分支

feature 等开发完后合并回开发分支
参考连接

4. 常见问题

4.1 AS上配置Git

添加链接描述

本地配置:AS设置Git路径 -> 版本控制Git创建仓库 -> 右键目录add -> commit

4.2 合并冲突

4.3 merge和rebase的区别


  • Git Merge
    概述
    git merge 是一种非破坏性操作,用于将两个分支的更改合并到一起。它通过创建一个新的"合并提交"(G'),将两个分支的历史联系起来。
    优点
    保留历史完整性:合并操作保持了两个分支的原始历史不变。
    简单直观:对于 Git 新手来说, merge 更易于理解和操作。
    使用场景
    git merge 特别适用于团队协作环境,其中保留完整的历史记录和明确的合并点是有价值的。
  • Git Rebase
    概述
    git rebase 重新定位分支上的更改,将它们放在另一分支的最新更改之上。这通常涉及重写提交历史,使其看起来更加线性。
    优点
    清晰的线性历史: rebase 为项目提供了一个干净、直线的历史。
    避免冗余合并提交:有助于减少不必要的合并提交。
    使用场景
    rebase 是理想的选择,当你想要整理个人分支上的提交,或者在团队中共享更改之前更新你的特性分支。

4.4 git log和git reflog的区别

添加链接描述

使用git log命令只可以查看到HEAD指针及其之前的版本信息,如果版本发生过回退操作,则可能会出现,HEAD指针之后仍存在历史提交版本的情况,而这些提交版本信息通过git log命令是看不到的。

4.5 git fetch和git pull 区别

添加链接描述

Git fetch命令只是从远程库下载最新代码,但并不自动合并到本地分支。它只是将最新代码下载到本地仓库的一个特殊的分支,称为远程跟踪分支。

Git pull命令是从远程库获取最新代码并自动合并到本地分支的快捷方式。它实际上包含了两个操作:fetch和merge。

4.6 在Push代码时遇见冲突时用Git Merge还是Git Rebase?

添加链接描述

如果选择使用 git merge 来解决 git push 时的冲突,你可以先将远程分支的更改合并到你的本地分支。
操作步骤:

先拉取远程分支的更新: git pull 或 git fetch 后跟 git merge。

解决可能出现的任何合并冲突。

完成合并后再次尝试 git push。

相关推荐
Magnetic_h1 分钟前
【iOS】单例模式
笔记·学习·ui·ios·单例模式·objective-c
华清远见成都中心4 分钟前
哪些人适合学习人工智能?
人工智能·学习
求学小火龙15 分钟前
ElasticSearch介绍+使用
java·大数据·elasticsearch
檀越剑指大厂16 分钟前
【Elasticsearch系列六】系统命令API
大数据·elasticsearch·搜索引擎
爱吃瓜的猹z16 分钟前
git reset 几点疑问
git·源代码管理
天下无贼!23 分钟前
2024年最新版TypeScript学习笔记——泛型、接口、枚举、自定义类型等知识点
前端·javascript·vue.js·笔记·学习·typescript·html
秋秋秋叶29 分钟前
Python学习——【2.3】for循环
python·学习
月夕花晨3741 小时前
C++学习笔记(30)
c++·笔记·学习