Git简介
Git 是目前世界上最先进的分布式版本控制系统。
作用:源代码管理
为什么要进行源代码管理?
Git的诞生
- 作者是 Linux 之父:Linus Benedict Torvalds
- 当初开发 Git 仅仅是为了辅助 Linux 内核的开发(管理源代码)
git 开发时间表
- git 的产生是 Linux Torvals 在无奈被逼的情况下创造的,我看了一下时间历程:
- 2005 年 4 月3 日开始开发 git
- 2005 年 4 月 6 日项目发布
- 2005 年 4 月 7 日 Git 开始作为自身的版本控制工具
- 2005 年 4 月 18 日发生第一个多分支合并
- 2005 年 4 月 29 日 Git 的性能达到 Linux 预期
- 2005年 7 月 26 日 Linux 功成身退,将 Git 维护权交给 Git 另一个主要贡献者 Junio C Hamano,直到现在
Git 迅速成为最流行的分布式版本控制系统,尤其是 2008 年,GitHub 网站上线了,它为开源项目免费提供 Git 存储,无数开源项目开始迁移至 GitHub,包括 jQuery,PHP,Ruby 等等
Git管理源代码特点
1.Git 是分布式管理.服务器和客户端都有版本控制能力,都能进行代码的提交、合并、…
2.Git 会在根目录下创建一个.git 隐藏文件夹,作为本地代码仓库
Git操作流程图解
Git服务器
?
\rightleftarrows
? 本地仓库
?
\rightleftarrows
? Git客户端
Git单人操作
三大区
工作区:进行添加、修改、删除文件的操作
暂存区:将工作区中的操作完成小阶段的存储,是版本库的一部分
仓库区:标志着个人开发的一个小阶段的完成
- 仓库区中记录的各版本是可以查看并回退的
- 但是在暂存区的版本一旦提交就再也没有了
安装
sudo apt-get install git
创建本地仓库
git init
git config user.name xxxx
git config user.name xxxx
查看文件状态
git status
红色表示工作区,未跟踪的修改/添加文件
绿色代表暂存区,暂存的修改/新添加文件
增加到暂存区
将工作区的文件添加到暂存区,进行版本跟踪
git add filename
如:
git add b.py
修改文件并暂存
修改b.py 文件后:
工作区出现新的modified的b.py
完成修改后可通过add 命令将新的b.py 暂存到暂存区。
提交到仓库区
git commit -m '备注'
提交到仓库区后,暂存区清空:
查看提交日志
git log
git reflog
版本回退
将工作区的代码回退到仓库区的最新版本的前几个版本
git reset --hard HEAD^
git reset --hard HEAD^^
git reset --hard HEAD~1
git reset --hard HEAD~2
将工作区的代码回退到指定版本
git reset --hard xxxxxxx(reflog显示记录前的七位码,即版本号)
代码撤销
将工作区的代码撤销到仓库区中的状态,即撤销工作区相对于仓库区的所有修改
git checkout filename
将暂存区的代码恢复到工作区,即将暂存区中的代码拿出暂存区,放回工作区
也意味着将工作区的代码撤销到暂存区的状态,即撤销工作区相对于暂存区的所有修改
git reset HEAD file
GitHub远程操作
创建远程仓库及开发基础流程
- 注册github账号
- 创建仓库
- 在远程仓库中创建代码并提交
- 将远程仓库克隆到本地
git clone HTTPS网址
- 单人操作:add,commit等…
- 配置SSH秘钥
ssh-keygen -t rsa -C "username@email"
- 将本地仓库推送到远程仓库
git push
从远程仓库拉取(pull)
可以将本地仓库更新到远程仓库的状态
git pull
代码冲突
在多个人一起开发的时候,两者向远程仓库推送的代码可能会产生冲突。
这个时候,冲突的后者pull推送时会收到警告。
两者需要协商,后者整合修改代码再进行pull推送
容易冲突的操作方式
- 多个人同时操作了同一个文件
- 一个人一直写不提交
- 修改之前不更新最新代码
- 提交之前不更新最新代码
- 擅自修改他人代码
减少冲突的操作方式
- 养成良好的操作习惯,先
pull 在修改,修改完立即commit 和push - 一定要确保自己正在修改的文件是最新版本的
- 各自开发各自的模块
- 如果要修改公共文件,一定要先确认有没有人正在修改
- 结束工作前一定要提交代码,开始工作时第一件事拉取最新代码
- 一定不要擅自修改他人的代码
标签
每当完成一个大版本之后,可以对当前的远程仓库代码编写一个标签
git tag -a 标签名 -m '标签描述'
git push origin 标签名
git tag -d 标签名
git push origin --delete tag 标签名
分支
查看分支
git branch
创建分支
可以创建一个子分支,与主分支平行,独立开发某功能,之后可以再合并。
git checkout -b newbranch
推送远程
将子分支推送到远程服务器上
git push -u origin newbranch
子分支合并到主分支
git checkout main
git merge newbranch
git push
|