Git常见操作指令之保姆级教程,新手可入坑

目录

1、安装与简介

1.1 安装

1.2 简介

2、本地仓库

2.1 设置用户信息

2.2 创建本地仓库 

​编辑

2.3 查看分支

2.4 查看仓库状态 

2.5 添加暂存区 

2.6 提交本地仓库 

2.7 创建和切换分支

2.8 删除分支

2.9 合并分支

2.9.1 无冲突合并

2.9.2 冲突合并

2.9.3 特殊情况

2.9.4 常规选择

2.9.5 Vim退出操作

 3、远程仓库

3.1 克隆

3.2 拉取和推送 

3.3 创建本地分支

4、举例常见场景

4.1 场景一


1、安装与简介

1.1 安装

点击官网安装包下载链接,选择操作系统 ,我这里安装的是windows 64位的。

git安装包下载

下载后双击安装即可,没什么注意事项。 安装后,鼠标右键,到能下图两个选项,表示成功。

1.2 简介

这部分内容,想用通俗易懂的话,理解核心名词的含义,并理顺它们之间的关系。

  • 工作区:编辑代码的地方(一般在自己电脑上),代码特指整个工程目录。
  • 暂存区:一个中间索引区域,工作区内容有修改后,需要先手动添加至暂存区,该区会记录每一次变化内容,存储于.git目录中。
  • 分支:每一个分支,都是一个独立的开发线,允许并行工作。一般用于多个版本,或多人开发,多个分支,各自在自己的分支上工作。
  • 版本库:需将暂存区内容手动提交至版本库,也是位于.git目录下,版本库会包含所有分支,而在每一个分支下,又会存储提交的所有快照(每次从暂存区提交的内容)。
  • 仓库:包含工作区和版本库的整体结构,特指工程目录下所有问价+.git目录。

理解上述内容后,日常工作中,也会碰到本地分支/远程分支,或者本地仓库/远程仓库等概念。

  • 本地仓库:通俗理解,就是代码存储在你的本地机器上,与远程仓库相对,可以通过网络与远程仓库进行交互(如推送和拉取)。
  • 远程仓库: 代码存储在云端服务器上,可供大家共享与修改。
  • 本地分支:是指本地仓库中存在的分支。
  • 远程分支:是指在远程仓库中存在的分支。

其中,本地分支会以普通名称显示,远程分支通常会以 remotes/origin/name形式显示。如下图,master就是本地分支,其余红色部分是远程分支。

2、本地仓库

2.1 设置用户信息

本地使用git工具,可在首次设置用户信息。具体操作:鼠标右键,选中打开Git Bash Here。

设置用户信息命令。

# 设置用户名和邮箱
git config --global user.name 用户名
git config --global user.email 邮箱

#示例
git config --global user.name 小红
git config --global user.email 996685qq@.com

设置成功后,一般会在c/user目录下,新建一个.gitconfig文件,保存用户信息。如果找不到,就使用搜索功能,我这的存放目录是C:\Users\Administrator\.gitconfig。

2.2 创建本地仓库 

在工程代码的主目录下,右键,选中打开Git Bash Here,键入初始化命令。

#初始化
git init

成功后,会生成一个.git目录,也会默认创建一个主分支master。

没看到.git目录,也不要慌,可能是目录被隐藏了。点击查看->勾选上“隐藏的项目”,即可看到。

如果想删除,刚初始化的git仓库

#在 Windows 系统上,打开命令行(cmd)并运行
rmdir /s /q .git


#在 Mac 或 Linux 系统上,打开终端并运行:
rm -rf .git

2.3 查看分支

查看所有分支,前面讲过,初始化时默认会创建一个主分支master。

#查看所有分支
git branch -a

#查看远程分支
git branch -r

但这里,使用命令查看,什么都没有。为什么?先留一个悬念。

2.4 查看仓库状态 

#查看仓库状态
git status

如下图所示,这里是初始化后默认生成的主分支master,且未进行任何操作,而显示的状态。

查看仓库状态,你会得到以下几个关键信息,以上图为例子,阐述说明。

  1. 显示当前所在分支名称:on branch master(在master分支);
  2. 提交状态:No commit yet(未进行任何提交);
  3. 未跟踪文件:列出那些文件是尚未被跟踪的,如上图中红色字体。未添加到暂存区的文件,被称为“未跟踪文件”。
  4. 暂存区状态:显示那些文件已经被添加至暂存区,上图无,因为我们还没有手动执行任何操作呢。

2.5 添加暂存区 

#添加部分文件到暂存区
git add 文件名或文件夹名

#示例
git add Main.py Icon/

#添加所有
git add .

#添加特定类型文件
git add *.txt


#对于永远不需要添加的文件,添加到.gitignore文件
#创建文件,然后文件编辑,将不需要add的文件名填入其中,整个文件夹不添加记得加/  如ceshi/

touch .gitignore

#只添加建立追踪的文件,即添加修改文件,不添加新增文件
git add-u

#撤销已经添加的文件
git reset 文件名

执行示例命令后,如下图,我添加了一个py文件和一个Icon文件夹。

再次执行查看仓库状态,相较于第一次查看,多了一项 "Changes to be committed" ,直译过来就是提交前的改变,即暂存区内。

这样,绿色字体表示添加至暂存区。红色部分仍在工作区。

注意:添加到暂存区,并不等同于提交,所以还需手动提交至仓库。 

2.6 提交本地仓库 

注意:不能直接从工作区提交至本地仓库,只能先添加到暂存区,在提交到本地仓库。

#提交至本地仓库
git commit -m "提交信息说明,最好有意义,便于回溯"  暂存区文件名

#提交所有,包括未暂存的(跟踪但未添加暂存)
git commit -a -m "提交信息说明"

#示例
git commit -m “首次提交” Icon/

着重解释下,加上-a命令后,会提交所有,包括未暂存的(跟踪但未添加暂存),什么意思?

举个例子,假设A文件,首次被添加至暂存区(已变成了跟踪文件),可是在后来的操作中,A文件在工作区被修改过,但并未将其手动添加,这种就称之为 未暂存文件。

这个例子说明了,如下3点内容:

  • 只要添加过暂存区,就变成了跟踪文件。
  • 在工作区修改跟踪文件后,暂存区不会自动更新该文件,必须手动添加,暂存区才会记录修改内容。
  • 提交所有时,会将所有跟踪文件(暂存或未暂存的),先添加到暂存区,在提交。

执行示例命令后,如下图所示。 

 

此时,执行查看所有分支,示例图如下,主分支master已经存在了。这里是为了解惑,之前初始化后,查看分支没有的疑问。我理解的是,分支上有提交内容后,才会显示。

 

master显示为绿色,且前方带有 * 号,表示你当前处于分支master,接下来所有操作都是基于此分支进行的。 

2.7 创建和切换分支

# 创建新分支后,在切换到新分支
git branch name
git checkout name

#创建新分支,且直接切换到该新分支
git checkout -b name

#示例
git checkout -b 3.1

执行示例代码后,再次查看所有分支,如下图。新分支3.1创建后,直接切换。分支名以绿色显示,且前方带*号,表示你当前所处分支3.1。

新建分支3.1,是基于主分支master创建的,所以内容并不为空,而是复制master中的所有内容。

如何去确认呢?这里可以使用,查看分支差异命令。

#查看两个分支差异
git diff name1..name2

#示例
git diff master..3.1

执行示例命令后,无任何差异输出,再次验证了分支3.1是基于master创建的。

 

那是不是可以认为,每创建一个新分支,就是基于主分支的呢?

答案:不是的,我们可以做一个实验。

先在主分支上提交新内容,让主分支与分支3.1保持不同。然后切换到分支3.1后,在创建分支3.2,此时分别对比分支3.2与3.1,master的差异。会发现分支3.2与3.1无差异,这也就表明,创建新分支时,默认复制你当前所处分支内容。

#切换到主分支master
git checkout master
#检查切换成功
git branch -a
#主分支二次提交
git commit -m "二次提交" Main.py
#查看主分支与3.1差异
git diff master..3.1
#切换到分支3.1
git checkout 3.1
#创建分支3.2
git checkout -b 3.2
#分别查看分支3.2与3.1,master之间的差异
git diff 3.1..3.2
git diff master..3.2

windows下查看差异,碰到这种冒号:,之前键入 q ,即可退出。 

 

2.8 删除分支

删除分支前,切记,要先切换到其他分支,才能删除,否则报错。

#先切换分支,在执行删除
git checkout name1
git branch -d name2

#示例
git checkout master
git branch -d 3.1

2.9 合并分支

将原分支(你修改的分支)合并到目标分支。 

#切换到目标分支
git checkout target-branch

#合并分支,将原分支ori-branch合并到目标分支target-branch
git merge ori-branch

插个题外话,如果主分支master更新了(如添加新内容),3.1分支(创建时直接复制master分支的内容)不做任何操作,会自动更新吗?答案是不会的,需要手动更新(合并)。 

2.9.1 无冲突合并

举例,在3.2分支上,添加和提交新文件untitled.ui,然后合并到分支3.1。

2.9.2 冲突合并

Git中较为常见的冲突,一般是指内容冲突。

  • 同一文件的同一位置被不同分支修改。
  • 同一文件的不同位置被不同分支分别进行了修改,这种是没有直接冲突的,Git会自动合并,但是大部分修改会导致代码行的位置变化。

这里还是以举例子说明,分别在master、3.1分支下,修改Mainform.py中第9行的代码,且两分支修改内容不同,执行合并。

结果如下图,提示自动合并失败,冲突文件为Mainform.py,此时需手动调整冲突再次提交结果。

2.9.3 特殊情况

不知道大家有没有碰到这样的情况,在拉取主分支后,忘记切换到自己所属分支上了,然后就开始了创作(修改),等到提交的时候,发现自己竟然是在主分支上修改的。此时,既不想丢弃自己辛苦的创作,又想保持主分支干净(无任何修改痕迹)。所以,最好的结果,就是让修改内容提交到自己所属分支上,主分支保持原状。

以举例子方式,假如我在分支3.1下进行修改后,想同步合并到分支master上,但又不想提交至分支3.1(分支3.1保持未修改前状态)。

首先切换到3.1分支下,修改Mainform.py文件(添加一行代码)并保存后,直接使用命令切换至master分支,如下图,会提示Mainform.py文件有未提交的修改。

此时,已经成功切换到了master分支下,打开Mainform.py文件后,进行检查,是修改后的样子。然后,就可以直接执行添加暂存区和提交。

上述操作执行成功后,你在3.1分支上的修改内容,就同步提交到了分支master上。最后,不放心的,可以切换到分支3.1上,检查下修改内容是否提交到3.1上了,因为咱们没有在分支3.1上操作,所以就不会。 

2.9.4 常规选择

我们在某一分支上进行创作后,通常,你可以有三种选择:

1、 提交更改:切换到分支3.1后,执行添加暂存区和提交操作(git add / git commit)。

2、 放弃更改:切换到分支3.1后,执行放弃更改命令 git checkout --Mainform.py。

3、 暂存更改:如果你不想现在提交,可以使用Git暂存功能,等用时在恢复暂存。

第3中方式,不同于上述两种,无需先切换到分支3.1下,它在任何一分支下(前提是分支下有该文件),执行均有效。

还是以例子说明,我是直接在master分支下执行暂存,结果如下图所示。

执行后,会发现master分支下的修改消失了,3.1分支下的修改也消失了。然后,我尝试在3.1分支下,执行暂存,最终是同样的结果。

此外,我尝试了,在master分支下执行暂存,在3.1分支下执行恢复暂存,惊讶地发现两个分支下的修改同时消失,也同时恢复了。

我怀疑暂存和恢复功能,无需区分分支,是一个统一的动作。感兴趣的小伙伴可以尝试。

#查看更改
git diff 文件名

#暂存更改
git stash

#恢复暂存
git stash pop

#放弃更改
git checkout --文件名

2.9.5 Vim退出操作

操作过程中,如果碰到了如下的vim编辑界面,不知道怎么操作,看过来。

如下图所示,按 Esc 键,然后键入 :wq 来保存并退出。

还有碰见这种情况的,如下图所示,键入 q 字母即可退出。 

 3、远程仓库

在我们工作时,通常使用的是公司远程仓库,即一台云端服务器,不允许在上面开发,只存储代码。大家协同工作时,每个人都要先从远程仓库中克隆代码。

3.1 克隆

依旧是在你想存放代码的主目录下,右键->open Git Bash Here,键入克隆指令。

#克隆
git clone <repo-url>

克隆成功后,主目录下会自带.git目录。

查看所有分支,本地分支以分支名显示,远程分支通常以remotes/origin/分支名显示。

这个master本地分支,其实不是我们人为创建的。而是,在克隆远程仓库时,Git会自动为你创建一个本地分支,通常复制的是远程主分支master或main,具体取决于远程仓库的默认分支设置。

3.2 拉取和推送 

克隆后,默认创建的本地分支master会与远程分支remotes/origin/master建立跟踪关系。

此时,可以使用简单的拉取(从remotes/origin/master拉取最新代码到本地)和推送(将本地master修改内容推送到远端)命令。

#拉取
git pull

#推送
git push

 如果本地分支,并没有与远程分支建立跟踪关系,在拉取和推送时,需注明远程分支名称。

git pull remotes/origin/master
git push remotes/origin/master

3.3 创建本地分支

克隆成功后,本地分支通常与远程仓库的主分支建立跟踪关系,在本地进行开发后,可能会不小心推送到远程,破坏了主分支,就会影响到别人。

这种情况,建议在远程仓库中,创建一个独属你的分支own。进而在本地,创建一个新分支,是基于远程仓库中独属你的分支owm。这样,你在本地任何开发,一不小心推送到远程,也不用担心,毕竟也影响不到别人。

#基于远程分支创建本地分支,并切换
git checkout -b branch_name remote/origin/name

基于远程分支9.1,新建了一个本地分支9.1,这两个分支是建立了跟踪关系的。 

跟踪关系具有传递性?不具备,需手动添加。

假如新建一个本地分支9.2,是基于本地分支9.1创建的。因为本地分支9.1 与远程分支9.1建立了跟踪关系的,那本地分支9.2会不会与远程分支9.1建立跟踪关系呢? 

答案是不会的,需要自己手动添加。

4、举例常见场景

4.1 场景一

假如你在本地写了一版代码,想上传到公司服务器上某个仓库(已有),并创建一个新的分支。

#进入工程目录下,初始化
git init

git add .
git commit -m 'init commit'

#关联远程仓库
git remote add origin 远程仓库名

git checkout -b dev_name

#推送分支 -u关联远程分支,这里会自动创建新的远程分支
git push -u origin dev_name

#附加一种特殊操作,强制覆盖远程分支内容
git push -f origin dev_name

以上内容,纯属自己所想所写,如有不对,欢迎评论区更正!!!

以后如有新想法,会持续更新!!!

<think>好的,我现在需要向用户介绍Git操作流程。首先,我需要确保自己理解Git的基本概念和常用操作,这样才能清晰地传达给用户。Git是一个分布式版本控制系统,用于跟踪文件的变化,协调多人协作开发。用户可能是刚开始接触Git,所以需要从基础开始,逐步引导。 首先,我应该考虑用户的使用场景。他们可能是在个人项目中使用Git,也可能是在团队协作中。无论是哪种情况,基本的流程大致相同:初始化仓库、添加修改、提交更改、处理远程仓库、分支管理等。需要覆盖这些主要步骤,但也要注意不要过于深细节,以免让用户感到困惑。 接下来,我需要组织回答的结构。按照逻辑顺序,从安装Git开始,然后逐步介绍各个操作。不过用户的问题直接问的是操作流程,可能已经安装了Git,所以安装部分可以简要带过,或者放在最后作为补充信息。重点放在日常使用的流程上。 然后,思考每个步骤的具体内容。初始化仓库涉及`git init`或`git clone`,这取决于用户是从头开始还是克隆现有项目。添加修改和提交是日常使用最频繁的部分,需要详细说明`git add`、`git commit`的使用。远程仓库部分需要解释如何连接远程仓库(如GitHub、GitLab),使用`git remote add`,以及推送和拉取代码的`git push`、`git pull`。 分支管理是Git的重要功能,需要介绍如何创建、切换、合并分支,以及解决冲突的方法。这部分可能对新手来说有点复杂,所以需要用简单的例子说明,比如功能开发通常在新分支上进行,完成后合并回主分支。 另外,用户可能需要了解一些常用命令的状态检查,比如`git status`、`git log`,这些可以帮助他们了解当前仓库的状态和提交历史。还有撤销更改的命令,如`git checkout`、`git reset`,这些在出错时非常有用。 需要注意用户可能的疑问点,例如为什么需要先add再commit,远程仓库的作用,分支合并冲突的处理等。在解释时要简明扼要,避免技术术语过多,用类比或实际例子帮助理解。 还需要检查是否有遗漏的重要操作,比如忽略文件的`.gitignore`设置,标签的使用,或者变基(rebase)等高操作。但根据用户的问题,可能只需要基础流程,所以高内容可以暂时不提,或者简要提及供用户进一步学习。 最后,总结整个流程,帮助用户形成整体的认识。可能用一个流程图或步骤列表来概括,这样用户一目了然。同时,提醒用户实践的重要性,建议他们通过实际操作来巩固知识。 在确保所有步骤覆盖全面且逻辑正确后,用清晰的中文分步骤解释,每个步骤给出命令示例,并说明其作用。注意使用正确的LaTeX格式,行内公式用$...$,独立公式用$$...$$,但在这个问题中可能涉及代码块,需要用代码标记而不是LaTeX。不过根据用户的系统指令,可能要求数学表达式用LaTeX,但代码部分应使用代码块。需要仔细阅读用户的系统指令,确保格式正确。 用户提供的系统指令中,要求行内数学表达式用$...$,独立公式用$$...$$,但回答中主要是Git命令,属于代码,可能需要使用代码块(如Markdown的```)。但原用户的问题中没有明确说明代码的格式,可能只需要在中文描述中正确使用LaTeX格式的数学表达式。但此处的问题是关于Git操作流程,可能不涉及数学公式,所以主要需要确保结构清晰,步骤正确,使用适当的中文术语,并正确应用格式要求中的其他点,如分点回答,结构清晰。 因此,总结回答的结构应该是分步骤介绍,每个步骤包含命令和解释,可能用编号列表,代码部分用行内代码标记(如`git init`),避免使用LaTeX,除非有数学表达式。但根据用户的系统指令,所有行内数学表达式必须用$...$,但Git命令不属于数学表达式,所以应正常使用代码标记。可能用户希望的是在需要数学表达式时正确使用LaTeX,而Git命令作为代码,使用代码块或行内代码。需要确认,但根据常规做法,使用代码标记更合适。 综上,最终的思考结果是将Git操作流程分为安装、配置、基本流程、分支管理、远程仓库、撤销更改、查看状态等部分,每个部分简明扼要地解释,并给出示例命令。确保语言通顺,结构清晰,符合用户的要求。</think>Git 是一种分布式版本控制系统,用于跟踪文件变更并协作开发。以下是其核心操作流程,分为基础步骤和进阶管理: --- ### 一、安装与配置 1. **安装 Git** - 从官网下载对应系统版本:[https://git-scm.com/](https://git-scm.com/) - 终端验证安装: ```bash git --version ``` 2. **配置用户信息** ```bash git config --global user.name "你的用户名" git config --global user.email "你的邮箱" ``` --- ### 二、基础操作流程 1. **初始化仓库** - 新建本地仓库: ```bash git init ``` - 克隆远程仓库: ```bash git clone <远程仓库URL> ``` 2. **添加与提交更改**
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值