Git纯操作版 项目添加和提交、SSH keys添加、远程仓库控制、冲突解决、IDEA连接使用

Git

文章目录

最近学原理学的快头秃了,特此想出点不讲原理的纯操作版,不过还是放个图吧

项目简单克隆

git在本人日常中最重要的功能还是下载,所以先从下载开始讲起

首先,创建一个文件,用来存放等会clone下来的项目,然后点击GitBash进行命令行操作

之后 在git上找到你中意的项目,如图操作,复制链接

shell 复制代码
git clone https://github.com/newbee-ltd/newbee-mall.git

之后就会看到他在clone你的项目到本地文件夹,当然你也可以直接Download zip然后解压:

通用操作

之后讲通用的,先配置用户名

shell 复制代码
git config --global user.name " "
git config --global user.email " "

然后创建本地仓库

shell 复制代码
git init

打开此选项,查看隐藏的文件夹:

发现

这个目录是一个隐藏目录,而当前目录就是我们的工作目录。

创建成功后,我们可以查看一下当前的一个状态,输入:

shell 复制代码
git status

如果已经成功配置为Git本地仓库,那么输入后可以看到:

添加和提交

接着我们来看看,如何使用git来管理我们文档的版本,我们创建一个文本文档,随便写入一点内容,接着查看状态:

Untracked files是未追踪文件的意思,也就是说,如果一个文件处于未追踪状态,那么git不会记录它的变化,始终将其当做一个新创建的文件,这里我们将其添加到暂存区,那么它会自动变为被追踪状态:

shell 复制代码
git add hello.txt #也可以 add . 一次性添加目录下所有的
再次查看当前状态:

现在文件名称的颜色变成了绿色,并且是处于Changes to be committed下面,因此,我们的hello.txt现在已经被添加到暂存区了。

接着我们来尝试将其提交到Git本地仓库中,注意需要输入提交的描述以便后续查看,比如你这次提交修改了或是新增了哪些内容:

shell 复制代码
git commit -m 'Hello World'

接着我们可以查看我们的提交记录:

shell 复制代码
git log
git log --graph

我们还可以查看最近一次变更的详细内容:

shell 复制代码
git show [也可以加上commit ID查看指定的提交记录]

接着我们可以尝试修改一下我们的文本文档,由于当前文件已经是被追踪状态,那么git会去跟踪它的变化,如果说文件发生了修改,那么我们再次查看状态会得到下面的结果:

也就是说现在此文件是处于已修改状态,我们如果修改好了,就可以提交我们的新版本到本地仓库中:

shell 复制代码
git add .
git commit -m 'Modify Text'

接着我们来查询一下提交记录,可以看到一共有两次提交记录。

我们可以创建一个.gitignore文件来确定一个文件忽略列表,如果忽略列表中的文件存在且不是被追踪状态,那么git不会对其进行任何检查

回滚

当我们想要回退到过去的版本时,就可以执行回滚操作,执行后,可以将工作空间的内容恢复到指定提交的状态:

shell 复制代码
git reset --hard commitID

执行后,会直接重置为那个时候的状态。再次查看提交日志,我们发现之后的日志全部消失了。

那么要是现在我又想回去呢?我们可以通过查看所有分支的所有操作记录:

shell 复制代码
git reflog

这样就能找到之前的commitID,再次重置即可。

分支

分支就像我们树上的一个树枝一样,它们可能一开始的时候是同一根树枝,但是长着长着就开始分道扬镳了,这就是分支。我们的代码也是这样,可能一开始写基础功能的时候使用的是单个分支,但是某一天我们希望基于这些基础的功能,把我们的项目做成两个不同方向的项目,比如一个方向做Web网站,另一个方向做游戏服务端。

因此,我们可以在一个主干上分出N个分支,分别对多个分支的代码进行维护。

创建分支

我们可以通过以下命令来查看当前仓库中存在的分支:

shell 复制代码
git branch

我们发现,默认情况下是有一个master分支的,并且我们使用的也是master分支,一般情况下master分支都是正式版本的更新,而其他分支一般是开发中才频繁更新的。我们接着来基于当前分支创建一个新的分支:

shell 复制代码
git branch test

删除分支

shell 复制代码
git branch -d test1

现在我们修改一下文件,提交,再查看一下提交日志:

shell 复制代码
git commit -a -m 'branch master commit'

通过添加-a来自动将未放入暂存区的已修改文件放入暂存区并执行提交操作。查看日志,我们发现现在我们的提交只生效于master分支,而新创建的分支并没有发生修改。

将分支切换到另一个分支:

shell 复制代码
git checkout test

我们会发现,文件变成了此分支创建的时的状态,也就是说,在不同分支下我们的文件内容是相互隔离的。

我们现在再来提交一次变更,会发现它只生效在yyds分支上。我们可以看看当前的分支状态:

shell 复制代码
git log --all --graph

合并分支

我们也可以将两个分支更新的内容最终合并到同一个分支上,我们先切换回主分支:

shell 复制代码
git checkout test1

接着使用分支合并命令:

shell 复制代码
git merge test

会得到如下提示:

在合并过程中产生了冲突,因为两个分支都对hello.txt文件进行了修改,那么现在要合并在一起,到底保留谁的hello文件呢?

我们可以查看一下是哪里发生了冲突:

shell 复制代码
git diff

因此,现在我们将master分支的版本回退到修改hello.txt之前或是直接修改为最新版本的内容,这样就不会有冲突了,接着再执行一次合并操作,现在两个分支成功合并为同一个分支。

变基分支

除了直接合并分支以外,我们还可以进行变基操作,它跟合并不同,合并是分支回到主干的过程,而变基是直接修改分支开始的位置,比如我们希望将yyds变基到master上,那么yyds会将分支起点移动到master最后一次提交位置:

shell 复制代码
git rebase master

变基后,yyds分支相当于同步了此前master分支的全部提交。

优选

我们还可以选择其将他分支上的提交作用于当前分支上,这种操作称为cherrypick:

shell 复制代码
git cherry-pick <commit id>:单独合并一个提交

这里我们在master分支上创建一个新的文件,提交此次更新,接着通过cherry-pick的方式将此次更新作用于test分支上。

远程项目推送

认证

首先我们需要一个认证

shell 复制代码
ssh-keygen -t rsa
cat ~/.ssh/github.pub #需要替换

打开所在目录,复制 .pub文件中的所有内容,之后添加ssh key

shell 复制代码
git commit -a -m 'Modify files'
git log --all --oneline --graph
git push origin master 
git log --all --oneline --graph

推送成功

主页也看到了

也可以远端绑定分支

shell 复制代码
git push --set-upstream origin master:master
git push origin

抓取、拉取和冲突解决

如果出现多个本地仓库对应一个远程仓库的情况下,比如一个团队里面,N个人都在使用同一个远程仓库,但是他们各自只负责编写和推送自己业务部分的代码,也就是我们常说的协同工作,那么这个时候,我们就需要协调。

如果出现进度不一样,这时就需要进行pull操作,获取远程仓库中最新的提交:

shell 复制代码
git fetch 远程仓库 #抓取:只获取但不合并远端分支,后面需要我们手动合并才能提交
git pull 远程仓库 #拉取:获取+合并

之后可能会出现冲突,例如:

shell 复制代码
To https://github.com/xx/xxx.git
 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'https://github.com/xx/xxx.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

一旦一个本地仓库推送了代码,那么另一个本地仓库的推送会被拒绝,原因是当前文件已经被其他的推送给修改了,我们这边相当于是另一个版本,和之前两个分支合并一样,产生了冲突,因此我们只能去解决冲突问题。

如果远程仓库中的提交和本地仓库中的提交没有去编写同一个文件,那么就可以直接拉取:

shell 复制代码
git pull 远程仓库

拉取后会自动进行合并,合并完成之后我们再提交即可。

但是如果两次提交都修改了同一个文件,那么就会遇到和多分支合并一样的情况,在合并时会产生冲突,这时就需要我们自己去解决冲突了。

IEDA类软件连接

以下使用GoLand作为范例,IDEA也大差不差

之后登陆账户

之后就可以提交了,命令都大差不差

操作到这里就结束了,有兴趣的可以去了解了解原理

相关推荐
AI首席情报员_阿布15 小时前
2026 GitHub 最火的 10 个 AI Agent 框架:普通开发者的选型指南
github
Carry34515 小时前
不清楚的 .gitignore
前端·git
阿里嘎多学长20 小时前
2026-01-11 GitHub 热点项目精选
开发语言·程序员·github·代码托管
三两肉20 小时前
HTTPS ECDHE 握手全解析
网络协议·https·github·rsa·echde
啊湘21 小时前
vscode 使用 github (适用CURSOR等使用)
ide·vscode·github·cursor·mcp
Kiyra21 小时前
虚拟机假死?SSH 能连却卡 Logo 界面
运维·ssh
l1t21 小时前
利用DeepSeek辅助拉取GitHub存储库目录跳过特定文件方法
人工智能·github·deepseek
Hilaku1 天前
我用 Gemini 3 Pro 手搓了一个并发邮件群发神器(附源码)
前端·javascript·github
谢平康1 天前
ssh-copy-id 后还是一直需要密码登录的一个解决办法
运维·ssh