学习使用Git
安装Git
首先请前往Git官网去下载最新的安装包
Mac:https://git-scm.com/download/mac
Win: https://git-scm.com/download/win
安装完成后,需要设定用户名和邮箱来区分不同的用户:
git config --global user.name "自己的用户名"
git config --global user.email "自己的邮箱"
//如果本机设置过忘记用户名和邮箱可以使用
git config user.name
git config user.email
git config user.password
Gitee
新建仓库
创建本地仓库
项目名最好和本地仓库名一致
mkdir dsjqqhdflzy
创建一个空的Git仓库或重新初始化一个现有仓库
git init
输⼊后,会⾃动⽣成⼀个 .git ⽬录,注意这个⽬录是⼀个隐藏⽬录,⽽当前⽬录就是我们的⼯作⽬录。创建成功后,我们可以查看⼀下当前的⼀个状态,输⼊:
git status
如果已经成功配置为Git本地仓库,那么输⼊后可以看到:
On branch master
No commits yet
// 这表示我们还没有向仓库中提交任何内容,也就是⼀个空的状态。
然后,我们在本地库上使用命令git remote add
把它和Gitee的远程库关联:
git remote add origin https://gitee.com/hanxuxian/dsjqqhdflzy.git
添加和提交
我们创建一个README.md文件
touch README.md
将README.md添加到暂存区
git add README.md
查看当前状态
git status
我们的README.md现在已经被添加到暂存区了
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: README.md
我们将其提交到Git本地仓库中
git commit -m "fitst commit"
Terminal(终端)会显示以下信息表示提交到本地仓库成功
[master (root-commit) ea3d861] first commit
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 README.md
接着我们可以查看我们提交记录:
git log
git log --graph
我们还可以查看最近⼀次变更的详细内容:
git show //也可以加上commit ID查看指定的提交记录 (commit ID)为提交成功的 ea3d861
然后将本地的"master"分支推送到名为"origin"的远程仓库。
git push -u origin "master"
回滚
当我们想要回退到过去的版本时,就可以执⾏回滚操作,执⾏后,可以将⼯作空间的内容恢复到指定提交的状态:
git reset --hard commitID
执⾏后,会直接重置为那个时候的状态。再次查看提交⽇志,我们发现之后的⽇志全部消失了。
那么要是现在我⼜想回去呢?我们可以通过查看所有分⽀的所有操作记录:
git reflog
这样就能找到之前的commitID,再次重置即可。
分支
分⽀就像我们树上的⼀个树枝⼀样,它们可能⼀开始的时候是同⼀根树枝,但是⻓着⻓着就开始分道扬镳了,这就是分⽀。我们的代码也是这样,可能⼀开始写基础功能的时候使⽤的是单个分⽀,但是某⼀天我们希望基于这些基础的功能,把我们的项⽬做成两个不同⽅向的项⽬,⽐如⼀个⽅向做Web⽹站,另⼀个⽅向做游戏服务端。因此,我们可以在⼀个主⼲上分出N个分⽀,分别对多个分⽀的代码进⾏维护。
创建分支
我们可以通过以下命令来查看当前仓库中存在的分⽀:
git branch
我们发现,默认情况下是有⼀个master分⽀的,并且我们使⽤的也是master分⽀,⼀般情况下master分⽀都是正式版本的更新,⽽其他分⽀⼀般是开发中才频繁更新的。我们接着来基于当前分⽀创建⼀个新的分⽀:
git branch test
# 对应的删除分⽀是
git branch -d yyds
现在我们修改⼀下⽂件,提交,再查看⼀下提交⽇志:
git commit -a -m 'branch master commit'
通过添加-a来⾃动将未放⼊暂存区的已修改⽂件放⼊暂存区并执⾏提交操作。查看⽇志,我们发现现在我们的提交只⽣效于master分⽀,⽽新创建的分⽀并没有发⽣修改。
我们将分⽀切换到另⼀个分⽀:
git checkout test
我们会发现,⽂件变成了此分⽀创建的时的状态,也就是说,在不同分⽀下我们的⽂件内容是相互隔离的。我们现在再来提交⼀次变更,会发现它只⽣效在yyds分⽀上。我们可以看看当前的分⽀状态:
git log --all --graph
合并分支
我们也可以将两个分⽀更新的内容最终合并到同⼀个分⽀上,我们先切换回主分⽀:
git checkout master
接着使⽤分⽀合并命令:
git merge test
会得到如下提示:
Auto-merging README.md
CONFLICT (content): Merge conflict in README.md
Automatic merge failed; fix conflicts and then commit the result.
在合并过程中产⽣了冲突,因为两个分⽀都对README.md⽂件进⾏了修改,那么现在要合并在⼀起,到底保留谁的README⽂件呢?
我们可以查看⼀下是哪⾥发⽣了冲突:
git diff
因此,现在我们将master分⽀的版本回退到修改hello.txt之前或是直接修改为最新版本的内容,这样就不会有冲突了,接着再执⾏⼀次合并操作,现在两个分⽀成功合并为同⼀个分⽀。
变基分⽀
除了直接合并分⽀以外,我们还可以进⾏变基操作,它跟合并不同,合并是分⽀回到主⼲的过程,⽽变基是直接修改分⽀开始的位置,⽐如我们希望将yyds变基到master上,那么yyds会将分⽀起点移动到master最后⼀次提交位置:
git rebase master
变基后,yyds分⽀相当于同步了此前master分⽀的全部提交。
优选
我们还可以选择其将他分⽀上的提交作⽤于当前分⽀上,这种操作称为cherrypick:
git cherry-pick <commit id>:单独合并⼀个提交
这⾥我们在master分⽀上创建⼀个新的⽂件,提交此次更新,接着通过cherry-pick的⽅式将此次更新作⽤于test分⽀上。
克隆项目
如果我们已经存在⼀个远程仓库的情况下,我们需要在远程仓库的代码上继续编写代码,这个时候怎么办呢?我们可以使⽤克隆操作来将远端仓库的内容全部复制到本地:
git clone 远程仓库地址
这样本地就能够直接与远程保持同步。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具