GIT使用以及规范

一、Git的由来

关于版本控制
什么是“版本控制”,为什么要关心? 版本控制是一个系统,用于记录一段时间内对一个文件或一组文件的更改,以便以后可以调用特定版本。 对于本书中的示例,您将使用软件源代码作为受版本控制的文件,尽管实际上您可以使用计算机上的几乎任何类型的文件来执行此操作。
如果您是图形或网页设计师,并且想要保留图像或布局的每个版本(您肯定希望这样做),那么使用版本控制系统(VCS)是非常明智的选择。 它允许您将所选文件恢复到以前的状态,将整个项目恢复到以前的状态,比较一段时间内的更改,查看谁上次修改了可能导致问题的内容,谁引入了问题以及何时引入问题等等。 使用 VCS 通常还意味着,如果您搞砸了事情或丢失了文件,您可以轻松恢复。 此外,您只需很少的开销即可获得所有这些。

Git是由Linus Torvalds于2005年开发的一种分布式版本控制系统。当时他为了维护Linux内核而开发了Git,因为之前使用的BitKeeper的授权问题导致Linux社区需要自己开发一个新的版本控制系统。Git之所以能够取代之前的版本控制系统,主要是因为它有以下特点:

  • 分布式: 每个开发者都有一个完整的代码仓库,可以离线工作,方便分支开发和合并。

  • 快速: Git的代码管理速度非常快,因为它不需要向中央服务器发送请求。

  • 稳定: Git可以保证代码版本的稳定性和完整性,即使服务器出现故障或数据丢失,也能够恢复到之前的版本。

  • 免费和开源: Git 在 GNU 通用公共许可证版本 2.0 下发布,这是一个开源许可证。 Git 项目选择使用 GPLv2 来保证你的自由 共享和更改自由软件—以确保软件 对所有用户免费。

  • 暂存区: 与其他系统不同,Git 具有称为“暂存区域”或“索引”的东西。这是一个中间区域,可以在完成提交之前格式化和查看提交。

二、Git的作用

Git主要有以下几个作用:

  • 版本管理:Git可以记录代码的每一个版本和修改记录,方便回滚和追踪问题。

  • 团队协作:Git可以让多个开发者同时开发同一个代码库,方便代码的合并和管理。

  • 分支开发:Git可以方便地创建和管理分支,实现多个功能同时开发,互不干扰。

  • 代码分享:Git可以将代码库分享到公共平台,方便其他开发者使用和贡献。

image

image

三、安装与使用

公司gitlab地址

http://ec-gitlab.ecgtool.com/wangzhigao/pecker_factory

1. 安装Git

  • Windows:可以从Git官网下载Windows版本的Git安装包,按照提示安装即可。

  • MacOS :可以通过Homebrew安装Git,也可以从Git官网下载Mac OS版本的Git安装包

  • Linux:可以通过系统包管理器安装Git,如果在Ubuntu上可以执行sudo apt-get install git命令进行安装。

:::
在官方网站下载慢的可以在电脑管家的商店里面进行下载,或者通过这个链接下载
:::

可以使用以下方法查看所有设置及其来源:

$ git config --list --show-origin

安装 Git 时,您应该做的第一件事是设置您的用户名和电子邮件地址。 这很重要,因为每个 Git 提交都使用这些信息,并且这些信息会不可变地烘焙到您开始创建的提交中:

并非必要操作–但是建议设置

$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com

2. 使用Git

您的默认分支名称

并非必要操作

要将 main 设置为默认分支名称,请执行以下操作:

$ git config --global init.defaultBranch main

检查您的设置

并非必要操作

如果要检查配置设置,可以使用命令列出 Git 此时可以找到的所有设置:

$ git config --list
user.name=John Doe
user.email=johndoe@example.com
color.status=auto
color.branch=auto
color.interactive=auto
color.diff=auto
...

2.1 初始化代码仓库

在项目的根目录下执行git init命令,会生成一个.git目录,用于存放Git的版本控制信息。

2.2 添加和提交代码

执行git add命令将代码添加到暂存区,然后执行git commit命令将代码提交到代码仓库。

$ git add .
$ git commit -m "Add new feature"

2.3 查看代码历史

执行git log命令可以查看代码的提交历史记录,包括提交者、提交时间、提交信息等。

$ git log
commit 8906c1cb6a

2.4 分支管理

执行git branch命令可以查看当前仓库的所有分支,执行git checkout命令可以切换到指定分支。

$ git branch
* master
  dev
$ git checkout dev
$ git checkout -b test-xxx origin/test-xxx

2.5 合并分支

执行git merge命令可以将指定分支合并到当前分支,解决代码冲突后提交即可。

$ git merge dev
$ git add .
$ git commit -m "Merge dev branch"

2.6 远程仓库管理

执行git remote add命令可以添加远程代码仓库,执行git push命令可以将代码推送到远程仓库。

$ git remote add origin https://github.com/username/repo.git -b test-xxxxx
$ git push -u origin master

2.7 撤销修改

执行git reset命令可以撤销代码的修改,执行git revert命令可以撤销某次提交。

$ git reset --hard HEAD
$ git revert 8906c1cb6a

3. 新项目使用

Create a new repository

git clone -b test-xxx http://xxxx.xxxx.com/wangzhigao/xxxxxxx.git
cd xxxxxxx
touch README.md
git add README.md
git commit -m "add README"
git push -u origin **改成自己的分支**

Existing folder

cd existing_folder
git init
git remote add origin http://xxxx.xxxx.com/wangzhigao/xxxxxxx.git
git add .
git commit -m "Initial commit"
git push -u origin **改成自己的分支**

Existing Git repository

cd existing_repo
git remote rename origin old-origin
git remote add origin http://xxxx.xxxx.com/wangzhigao/xxxxxxx.git
git push -u origin --all
git push -u origin --tags

四、使用规范

为了更好地使用Git进行版本控制,我们需要遵循以下规范:

  • 提交信息:每次提交代码时,需要编写简洁明了的提交信息,说明修改的内容和原因。

  • 分支管理:每个分支应该有明确的功能和目的,并且需要遵循分支开发、代码合并、分支删除的流程。

  • 代码合并:在合并代码时,需要仔细检查代码冲突,并进行适当的修改和测试,避免出现代码错误和稳定性问题。

  • 代码规范:为了提高代码质量和可读性,我们需要遵循一定的代码规范,如PEP8规范等。

五、git命令一览

命令 解析
git init 初始化本地 git 仓库(创建新仓库)
git config –global user.name “xxx” 配置用户名
git config –global user.email “xxx@xxx.com 配置邮件
git config –global color.ui true git status 等命令自动着色
git config –global –unset http.proxy remove proxy configuration on git
git clone git+ssh://git@192.168.53.168/VT.git clone 远程仓库
git status 查看当前版本状态(是否修改)
git add xyz 添加 xyz 文件至 index
git add . 增加当前子目录下所有更改过的文件至 index
git commit -m ‘xxx’ 提交
git commit –amend -m ‘xxx’ 合并上一次提交(用于反复修改)
git commit -am ‘xxx’ 将 add 和 commit 合为一步
git rm xxx 删除 index 中的文件
git rm -r * 递归删除
git log 显示提交日志
git log -1 显示 1 行日志 -n 为 n 行
git log –stat 显示提交日志及相关变动文件
git show dfb02e6xxxx 显示某个提交的详细内容
git show dfb02 可只用 commitid 的前几位
git show HEAD 显示 HEAD 提交日志
git show HEAD^ 显示 HEAD 的父(上一个版本)的提交日志 为上两个版本 5 为上 5 个版本
git tag 显示已存在的 tag
git tag -a v2.0 -m ‘xxx’ 增加 v2.0 的 tag
git show v2.0 显示 v2.0 的日志及详细内容
git log v2.0 显示 v2.0 的日志
git diff 显示所有未添加至 index 的变更
git diff –cached 显示所有已添加 index 但还未 commit 的变更
git diff HEAD^ 比较与上一个版本的差异
git diff HEAD — ./lib 比较与 HEAD 版本 lib 目录的差异
git diff origin/master..master 比较远程分支 master 上有本地分支 master 上没有的
git diff origin/master..master –stat 只显示差异的文件,不显示具体内容
git remote add origin git+ssh://git@192.168.53.168/VT.git 增加远程定义(用于 push/pull/fetch)
git branch 显示本地分支
git branch –contains 50089 显示包含提交 50089 的分支
git branch -a 显示所有分支
git branch -r 显示所有原创分支
git branch –merged 显示所有已合并到当前分支的分支
git branch –no-merged 显示所有未合并到当前分支的分支
git branch -m master master_copy 本地分支改名
git checkout -b master_copy 从当前分支创建新分支 master_copy 并检出
git checkout -b master master_copy 上面的完整版
git checkout features/performance 检出已存在的 features/performance 分支
git checkout –track hotfixes/BJVEP933 检出远程分支 hotfixes/BJVEP933 并创建本地跟踪分支
git checkout v2.0 检出版本 v2.0
git checkout -b devel origin/develop 从远程分支 develop 创建新本地分支 devel 并检出
git checkout — README 检出 head 版本的 README 文件(可用于修改错误回退)
git merge origin/master 合并远程 master 分支至当前分支
git cherry-pick ff44785404a8e 合并提交 ff44785404a8e 的修改
git push origin master 将当前分支 push 到远程 master 分支
git push origin :hotfixes/BJVEP933 删除远程仓库的 hotfixes/BJVEP933 分支
git push –tags 把所有 tag 推送到远程仓库
git fetch 获取所有远程分支(不更新本地分支,另需 merge)
git fetch –prune 获取所有原创分支并清除服务器上已删掉的分支
git pull origin master 获取远程分支 master 并 merge 到当前分支
git mv README README2 重命名文件 README 为 README2
git reset –hard HEAD 将当前版本重置为 HEAD(通常用于 merge 失败回退)
git branch -d hotfixes/BJVEP933 删除分支 hotfixes/BJVEP933(本分支修改已合并到其他分支)
git branch -D hotfixes/BJVEP933 强制删除分支 hotfixes/BJVEP933
git ls-files 列出 git index 包含的文件
git show-branch 图示当前分支历史
git show-branch –all 图示所有分支历史
git whatchanged 显示提交历史对应的文件修改
git revert dfb02e6e4f2f7b573337763e5c0013802e392818 撤销提交 dfb02e6e4f2f7b573337763e5c0013802e392818
git ls-tree HEAD 内部命令:显示某个 git 对象
git rev-parse v2.0 内部命令:显示某个 ref 对于的 SHA1 HASH
git reflog 显示所有提交,包括孤立节点
git show master@{yesterday} 显示 master 分支昨天的状态
git log –pretty=format:’%h %s’ –graph 图示提交日志
git stash 暂存当前修改,将所有至为 HEAD 状态
git stash list 查看所有暂存
git stash show -p stash@{0} 参考第一次暂存
git stash apply stash@{0} 应用第一次暂存
git grep “delete from” 文件中搜索文本 “delete from”

五、在PyCharm中使用Git

PyCharm是一款流行的Python开发工具,它内置了Git的支持,可以方便地管理代码的版本和提交记录。

1. 安装Git插件

新版PyCharm一般都默认安装了git插件,没有安装就去插件中心搜索Git插件,安装后重启PyCharm即可。

image

2. 配置Git

在PyCharm的设置中,选择Version Control -> Git,配置Git的路径。

image

3. 使用Git

在PyCharm的Git面板中可以方便地管理代码的版本和提交记录,包括代码的修改、添加、提交、查看历史等功能。

image

结语

本文介绍了Git的由来、作用、安装和使用方法,以及在PyCharm中使用Git的方法和使用规范。希望能够帮助您更好地使用Git进行版本控制和团队协作。


参考文献

git官方文档:

Git - Documentation (git-scm.com)