前言
- 苦命仔写教程
前置
Git (必备)
Github Desktop (可选)
IDE (以Jetbrains产品为例,Pycharm、IDEA、Clion…)
(学生邮箱能嫖专业版)
Git介绍
Git是一款分布式版本控制系统,最初由Linus Torvalds(Linux操作系统的创始人)为Linux内核项目而开发。Git被广泛用于各种软件开发项目,以便更好地管理代码版本和协作。
Git的基本概念
- 仓库(Repository):Git版本控制的中心是一个仓库,它包含了项目的所有版本历史和元数据。
- 分支(Branch):分支是Git中用于隔离不同开发线的一种机制。每个分支都可以独立地开发,最后再合并到主分支上。
- 工作区(Workspace):工作区是开发者在本地机器上存放待处理的文件的地方。
- 暂存区(Staging Area):暂存区是用于存放已经修改但还未提交的文件的地方。开发者可以使用
git add
命令将文件添加到暂存区。
常用操作
- 克隆(clone):克隆远程仓库的代码到本地
- 下拉(pull):从远程仓库拉取最新的记录(代码)
- 合并(merge):合并是将两个分支的代码合并到一起的操作。在合并时,Git会尝试自动合并代码,如果存在冲突,则需要手动解决
- 提交(commit):每次对代码进行修改并保存后,都可以创建一个提交。提交包含了修改的内容、提交者的信息以及提交时间戳
- 上推(push):将本地的更新推送到远程仓库
基本工作流程
- 克隆一个远程仓库到本地
- 在工作区修改代码
- 提交本次修改到暂存区 (
git add
) - 为暂存区域的文件保存快照,创建一个新的提交(记得添加提交信息)(
git commit
) - 拉取最新远程代码(在最终上推前,务必先拉取最新代码,并解决可能存在的冲突,合并主分支后,再执行推送操作)(
git pull
) - 推送到远程服务器(
git push
)
案例
克隆远程仓库到本地
获取仓库url (HTTPS、SSH等都可以)
克隆到本地
工作区工作
代码颜色表示不同的Git状态
- 红色:未加入版本控制
- 绿色:已加入版本控制,暂未提交
- 蓝色:已加入版本控制,已提交,有改动
- 白色:已加入版本控制,已提交,无改动
- 灰色:版本控制已忽略文件
- 黄色:被Git忽略,不跟踪
其他常用操作
版本更新
创建提交
对应Git命令为:
git add
和git commit
,Github Desktop和IDEA将这两个命令合并为一个操作拉取更新
必要性
个人项目就无所谓拉不拉更新,反正就只有一个分支。但是团队开发是多个人在一个主分支上进行操作,有可能会出现代码冲突的情况,比如你下拉完最新的代码,然后开始工作,但是这时候有成员提交了新的代码,那么你工作区的代码就并不是最新的,当你工作完准备提交时,这时候就会产生冲突。因此每次上推前,都需要先拉取最新的代码,如果有冲突存在,还需要先合并冲突,再进行提交。另外,建议是当准备一次上推时,知会一下团队成员,让大家知道你准备要上推代码了,以免出现你刚解决完一个冲突准备上推时,又有成员上推新的更新,增加自己的合并的工作量
操作
上推远程仓库
终于来到上推环节,这部分影响最大的应该是网络,如果推不上去,梯子开下全局试试,或者尝试不同的上推方法,IDE不行就用Github Desktop
Git Bash版
命令:
git push [分支(一般是master或main)]
Github Desktop版
IDE版
Python脚本,如果还是推不上去,这里提供一个脚本循环尝试
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
#!/usr/bin/env python # -*- coding: UTF-8 -*- __author__ = "Maylon" from git import Repo import os print("Start pushing...") print() cnt = 0 dir_file = os.path.abspath('./') # code的文件位置,默认将其存放在根目录下 repo = Repo(dir_file) g = repo.git while True: cnt += 1 try: g.push() print("Try " + str(cnt) + ": Successfully push!") break except Exception as e: print(e) print("Try " + str(cnt) + ": Push failed, retrying...") print() continue
撤销
注意事项
- 不要提交非代码文件(如配置文件)
- 先commit再pull(先pull的话会可能会直接覆盖自己的修改)
- 提交时的提交信息应该是简要而清晰的
- 推送前确保自己的修改是能运行的
写在最后
- Git还有一些好用的功能比如:Git Stash,checkout等,这部分留待自学,不在此赘述
- 临时写的博客,案例覆盖的不多,后续遇到再补充,欢迎添加评论
TODO
- 整理Git撤销操作