Git基础用法
一、Git常用命令
git init #初始化一个新的Git仓库
git clone <远程仓库url> #克隆一个远程仓库到本地
git add <文件名> #添加文件到暂存区
git commit -m "提交描述信息" #提交暂存区文件到本地仓库
git push <远程仓库名> <分支名> #推送本地提交到远程仓库
git pull #拉取远程仓库的更新
git status #查看Git仓库的状态
git diff #查看文件修改的差异
git log #查看提交记录日志
git checkout <分支名> #切换到其他分支
git checkout -b <新分支名> #创建新分支并切换到该分支
git merge <分支名> #合并分支
git branch #列出所有分支
git branch -d <分支名> #删除分支
git reset #撤销暂存区的修改
二、Git核心原理

三、Git工作流程
- 克隆(Clone)远程仓库:通过
git clone
命令将远程仓库克隆到本地,创建一个本地的 Git 仓库副本。 - 创建分支(Branch):在本地仓库中创建一个新的分支,用于进行特定的开发工作。可以使用
git branch
命令创建新分支,并使用git checkout
命令切换到新分支。 - 在分支上进行开发:在新创建的分支上进行代码编辑、添加、修改等开发工作,可以使用
git add
将修改添加到暂存区,然后使用git commit
提交到本地仓库。 - 同步更新:在开发过程中,可以使用
git pull
拉取远程仓库的更新,保持本地仓库与远程仓库的同步。 - 解决冲突:如果在拉取更新时发生冲突,需要手动解决冲突,然后使用
git add
将解决后的文件标记为已解决,并使用git commit
提交解决后的代码。 - 合并分支:在完成开发工作后,可以使用
git merge
将当前分支合并到主分支或其他目标分支,将修改合并到目标分支。 - 推送提交:在本地完成开发并确认无误后,可以使用
git push
将本地仓库的提交推送到远程仓库,与其他开发者共享代码。
四、实例演示
1、创建GitHub仓库
创建GitHub仓库,并复制url到本地文件夹中进行clone。

可以看到本地仓库中已经更新为远程仓库

2、提交修改
对text.md进行修改,输入add指令将修改后的文件添加到暂存区,通过status指令可以看到当前状态:text.md被修改,可以被提交。

输入commit指令将当前暂存区文件到本地仓库,通过status指令可以看到当前状态:显示工作区没有内容需要提交。

3、Push到GitHub仓库
输入push指令将本地仓库的提交推送到远程仓库。(此处先前设置过GitHub SSH密钥,故push不需要再输入账号密码或个人访问token)

此处可以看到GitHub远程仓库已同步本地所作的修改。

4、pull拉取远程仓库的更新
此处在GitHub上对text.md进行修改2,输入pull指令拉取远程仓库的更新,即可看到本地文件已经与远程仓库同步

5、分支
5.1 新建、切换分支
新建分支feature1并进入分支。

在分支feature1中修改text.md文件并提交。

回到main分支,再新建分支feature2进入分支,在分支feature2中修改text.md文件并提交。

5.2 合并分支
回到main分支,此时将feature1作的修改合并到main分支

此时如果将feature2作的修改也合并到main分支,则会发生合并冲突,合并失败,因为此时git不清楚对于两个分支要保留哪一个的修改。

5.3 合并冲突
此时打开text.md文件(输入指令vi text.md),=====上面的部分代表当前分支对文件的修改,下面代表想要合并进来的分支对文件的修改。此时只能保留上一部分或者下一部分。

修改文件冲突,保留feature2的修改,再次add和提交text.md文件,此时查看分支状态可以看到feature1和feature2两个分支已经合并。

5.4 推送分支
此时将合并后的分支推送到远程仓库上

可以看到远程仓库上的text.md已经是被feature2合并后的最新版本。

也可以通过git push origin “分支名”来推送其他分支。
5.5 拉取、跟踪分支
通过git fetch可以将远程仓库的分支信息更新到本地仓库中。git log命令可以看到本地仓库已经获取feature1分支。

此时可以创建跟踪分支,一个与远程仓库中的特定分支保持同步的本地分支。

这里只是对Git基本的命令和流程进行了记录,更规范的流程可以见这个B站视频十分钟学会常用git撤销操作,全面掌握git的时光机_哔哩哔哩_bilibili
参考资料:
Git工作流和核心原理 | GitHub基本操作 | VS Code里使用Git和关联GitHub_哔哩哔哩_bilibili