ToB企服应用市场:ToB评测及商务社交产业平台

标题: git详细使用教程 [打印本页]

作者: 温锦文欧普厨电及净水器总代理    时间: 2024-12-30 19:27
标题: git详细使用教程

下面关于git的使用我都是以E:\00\MyProject 这个项目为例举行举例讲解


一、 git介绍与安装

1、git介绍

   宰衡,你要明白阐明一下,git是软件,是用来举行版本控制的软件,什么叫版本控制,举个例子吧,你在用word软件写论文的时候,同一篇论文你可能会生存好几个:“‘GAN网络应用初级版’”,”GAN网络应用中期版“,“GAN网络应用终极版”。 而git要做的就是雷同这种不同版本之间的管理与控制
  2、git的安装

关于git的安装,这里不做赘述,网上的安装教程很多,而且很简单,这里就不做详细介绍啦。
3、git使用前的阐明

我们使用的时候一般是使用git自带的命令git bash,二不使用windows自带的CMD,因为‘git bash’ 自带的命令行很空命令是和Linux命令都是一样的,操作非常方便。(cmd也可以用,只是没有那么方便而已)
   在git bash 中,ls、cp、mkdr、vim等这些命令都有,‘而且文件尚有颜色区别’,你说好欠好用,只想对CMD说声say good bye
  
下面开始进入正题啦===============>GO

二、git的根本使用

1、走进git之前

在git bash 处打开你要管理的库

打开之后直接进入当前文件夹中,然后我用git stash
检察状态,显示我们并没有把它初始成一个堆栈,以是git此时是对他是无法举行管理的。

2、git根本使用

我们要管理的是MyProject这个文件夹,之后全部的git操作都是在这个文件夹下举行的
1、git init
项目初始化(init)成堆栈(repository)


git初始化命令
  1. git init
复制代码
初始化的结果如下:

从上图的初始化可以看出三点:


2、git add 管理文件

在说git add 命令之前先说git status
命令
(我们现在E:\00\MyProject\ 目次下创建一个git_test.py 文件)

  1. git status
复制代码
此时检察状态显示如下图:

从上面显示的状态可以看出,此时主分支还没有任何提交(commit),untracked file就是未被跟踪 / 追踪的文件,下面篮框中的git_test.py显示为赤色 阐明该文件还没有被git管理起来,下面给的提示是可以用git add 举行追踪管理起来。
git status
有三种状态:

  1. git add <file>
复制代码
使用git add 把文件举行管理起来,用命令git add告诉Git,把文件添加到堆栈:,之后在用git status
检察状态,此时git_test.py文件显示为绿色这阐明,该文件已经被git管理起来啦。之后我们假如修改了git_test.py这个文件,它又会变成赤色,要管理起来还要在git add 添加一下

下面我们把git_test.py 文件中添加一行文字如下,然后在检察添加文字之后的状态

下面提示我们已经修改啦git_test.py文件,未为提交暂存的更改(changes not stage for commit),以是下面显示该文件已经被修改(modified),以是要通过git add 再提交一次把修改之后的文件变绿,管理起来。

提示语:
   提示可以使用git add file 把这个修改的赤色的文件再被管理起来
(use “git add …” to update what will be committed)
提示
(use “git checkout – …” to discard changes in working directory)
  假如有很多个文件都被修改了,怎么办,一个一个手动如许修改吗,shit,如许岂不是要逆天。此时可以用一个点. 代替:
  1. git add file1  file2 ...   # 都手写上去累死你
  2. git add .   # 明智之举
复制代码
  这个点表现,把当前文件夹下全部的文件他(会递归的把每一个子文件夹下的文件也同样管理起来)都统统管理起来,就是要把它们都变绿
  3、git commit 把文件提交到堆栈,命令:

  1. git commit -m <message>
复制代码
简单表明一下git commit命令,-m后面输入的是本次提交的阐明,可以输入任意内容,当然最好是有意义的,如许你就能从历史记录里方便地找到改动记录。
实行命令:`git commit -m “第一次提交到堆栈” ,此时就已经把全部的文件都提交到了堆栈中,显示信息如下:

注意:
   1、提交的时候肯定要加上 -m 参数和后面的阐明信息,不要问为什么(这是构造下达的命令,你去实行就是啦)
2、假如再提交的时候提示你输入用户和邮箱的信息,肯定要写上,如许是告诉别人这个是谁提交的,后面知道泉源相关的信息,添加方式:
  1. git config --global user.email "you@example.com"
  2. git config --global user.name "Your Name"
复制代码
  1. git log
复制代码
git log
是检察提交的历史记录信息,显示的信息如下图:


commit 提交之后,我们再来检察一下状态信息:
nothing to commit, working tree clean ,意思就是:我们当前在工作的路径下全部修改和变更的文件都已经被提交啦。(当然,假如你后面又有修改文件则要再次提交啦)

为什么Git添加文件需要add,commit一共两步呢?
   add只是把全部修改的文件文件添加到堆栈,而commit是把所全部的文件提交到堆栈,每次commit之后都会天生一个版本号,之后只要拿到这个版本号,想回到哪一个版本都可以。
  注意:
   假如你提交的时候报错,看一下是不是-m 后面的message用的是单引号,然后改成双引号就可以啦,先阐明我没有尝试单引号,只是有人这么说,全部最好直接用双引号,省去不须要的麻烦。
  三、git 的高级使用

1、git的高级使用1

1、git reset --hard 版本号 版本回滚

命令:
  1. git reset --hard  版本号
复制代码
先说一下版本回滚是什么意思,上面我们已经提交commit一次是一个版本,假如我们修改之后再提交commit一次,此时就是两个版本,而此时是处于最新的版本,假如我们要回到第一个版本这就叫回滚。
下面是实例阐明:
我们继续修改git_test.py文件,在该文件里再添加一行文字:“开发完成进收支模块”,此时的文件已经被修改啦,内容如下:

下面就开是一系列的操作:检察转态->添加到库->提交->检察log->回滚,具体如下图:
(可以看到此是第二次提交的版本号的头指向master:HEAD->master)

用git log
可以检察到此时已经举行了两次提交,此时我们想回到第一次提交的状态应该怎么办呢?此时只要用git log
检察版本号和提交时的message信息,就可以定位到第一次提交的版本号。上面蓝色框起来的就是第一次提交的版本号,下面让我们一起回滚吧:
  1. git reset --hard 1249aeab1df156cda5d2245b073c9554f6a0a03b
复制代码
如下图:可以看到,此时的HEAD已经指回到第一次的状态

下面我们再来看看git_test.py文件的内容是不是第一次提交时的内容:

哦嘛噶,真的回滚回去啦,神奇不,哈哈哈啊

2、git reflog 检察全部的提交记录

上面是往前回滚
往前回滚之后,我们再查用git log
检察提交记录的时候,第二次提交的记录已经不在啦,如下图,怎么办,拿到真的是一去不复返了吗

大家不要慌,只要是真爱,我们也可以往后滚,此时用命令git reflog 就可以检察到多有的提交记录,之前回滚的记录也会出来,如下图:

此时我们我们可以看到第二次的提交记录又回来,但是我们看到的版本号变短了,实在两个是一样的,然后我么在往后滚会到第二次提交的状态(可以看出git log
相当于记录当前的版本提交信息,git reflog相当于记录了历史全部的版本提交信息):

然后我们在看一下git_test.py文件内容有没有回到第二次提交的状态:

哈哈,果然回来啦,确认无误,是真爱!

总结上面的内容:


2、git 的高级使用2

现在又开发了一个“开发商品货架模块”,然后用commit上线提交啦,如下:


紧接着又接着开发“开发货架商品辨认模块 1 / 2” 但是开发一半,突然发现上面开发的“开发商品货架模块” 有bug,此时要回去修改bug,但是现在的商品辨认模块只开发了一半,不能commit上线提交,怎么办 ?

此时的办法就是:把现在开发的商品
辨认模块暂存在一个地方(并没有提交),用git stash

之后就会看到修改之后而且没有提交的“开发货架商品辨认模块 1/ 2” 被暂存起来了,然后我们修改bug之后再举行提交。
1、git stash
把没有提交的代码暂存在某个地方,命令:


  1. git stash
复制代码
从下图可以看到,开发的商品模块我们并没有commit 提交,以是是飘红的,然后我们用git stash
把开发一半的商品辨认模块暂存起来,之后再用git status
检察的时候已经没有啦,因为已经


2、git stash
pop 举行把暂存的代码拿回来,命令:


  1. git stash
  2. pop
复制代码
bug修复完成之后,我们用git stash
pop把暂存的“开发货架商品辨认模块 1/ 2”拿回来,然后继续开发,但是拉回来之后发现出现辩论,这时就需要我们手动去举行修改啦。

注意:

3、git stash
一些其他命令的使用




注意:
   真正公司出现bug不会用git stash
举行解决,本身平时用可以,用的更多的是基于分支举行修改bug,下面介绍。
  3、git 高级使用3

1、git branch 创建分支,命令:

  1. git branch <分支名>
复制代码
相当于是两个环境,没有任何影响。下面创建完分支后,然后在切换分支的啥时候出现错误,是因为先要把当前修改的分支举行提交commit之后,才能才能正确的切换分支

2、git checkout 切换分支,命令:

  1. git checkout <分支名>
复制代码
从后面显示的dev 可以看到已经正确的从master分支切换到了dev分支上

   当然还可以用git branch -b dev 创建并切换到分支,但是我现在用的版本已经没有这个-b参数啦,不知道你们的有没有,假如有的话,你可以尝试使用。
  下面我们在dev中创建一个a.py 文件

可以看到在切换到master上的时候,在dev下创建的a.log文件并不在,以是两个环境是分开的。

3、git merge合并分支,命令:

  1. git merge <分支名>
复制代码
在谁人分支,就是把这个分支名合并到当前分支。
现在我们把上面dev分支合并到master分支下,以是就可以看到master下面现在是有a.log文件的啦。

在合并的时候需要写一点雷同commit -m message的message的信息,本身编辑一下就可以,如下。

全部修复bug也可以用这种方式,先创建一个bug分支修复好bug之后,再合并回到master分支上,末了把bug分支删除。
注意:
   git merge 合并的时候会产生辩论,此时就要举行手动修改啦(产生辩论一般就是由于修改了同一个文件的内容,以是合并的时候就会出现辩论。)
  
总结上面:
当要紧急修复bug,操作流程如下:
     
    
    
    
    
  口试题1:加入你们公司现场代码出现bug,你应该怎么办?
答: 创建一个bug分支,在bug分支上举行修复,修复完成之后再合并到master分支上。修复完之后再回到dev继续开发

口试题2:git rebase是什么意思 / 作用?
rebase 和merge都是做合并操作的,但git rebase 将提交记录合并到一条主线,提交记录整洁。
git rebase合并也有可能会辩论,手动解决完辩论之后,再实行git rebase --skip 跳出去
用git merge master 把master合并到dev上,用Git GUI 检察合并分支如下:

用git rebase dev 把dev合并到master(兰蓝框),用Git GUI 检察合并分支如下图,可以看到用rebase合并更整洁。
(假如想生存每一次合并的记录就用merge,假如想要更整洁就用rebase)

四、Git长途堆栈使用

比如我们在公司写的代码,下班之后还想回去继续写,但是我们又不想带电脑回去,住处有一台电脑,但是没有在公司写的代码,怎么办呢?

这个版本存储堆栈就雷同百度云网盘:
公共的版本存储堆栈:

本身搭建:

   用gitlab几条命令就可以搭建一个代码存储堆栈,虽然说存储在其他平台可能不太安全,但是本身搭建也有肯定个弊端,首先要有一台服务器,尚有要做好代码的备份和安全措施,方式黑客攻击代码走漏。
  1、在码云上创建版本存储堆栈

1、注册码云账号
下面我去注册一个码云的账号试一下:

2、创建版本存储堆栈


创建完成显示如下:
(test_git就相当于是一个文件夹,之后项目标代码就会推送到这个文件夹中)

之前我们已经在当地初始化一个堆栈啦,现在我们来说一下具体使用和上面的一些参数:
分成两种情况:

很显然我们是已经创建过啦,我们只要把现在全部提交都合并master分支,然后存储到码云上即可。
1、git remote add 添加存储堆栈地址

  1. git remote add origin https://gitee.com/shliang/test_git.git
复制代码
作用: 添加长途堆栈的地址,然后给这个长途堆栈地址https://gitee.com/shliang/test_git.git起一个别名叫origin ,你假如以为欠好可以本身起。
2、git push 把当地堆栈推到长途存储堆栈中

  1. git push origin master
复制代码
推到码云本身创建的堆栈的时候会要你填写在码云的用户名和登陆密码

下面是推到长途版本存储堆栈成功显示信息如下

之后我们刷新一下网页,就可以看到当地堆栈的master分支代码已经存储到了码云存储堆栈

dev这个分支也可以推过来,我们开发的代码都放到dev这个分支上。
  1. git push origin dev
复制代码


3、git clone 把代码从版本存储堆栈下载下来

我们创建一个家里的电脑文件夹表现在家里的电脑

  1. cd 家里的电脑/
  2. # 把代码从远程存储仓库下载下来
  3. git clone https://gitee.com/shliang/test_git.git
复制代码

从上面可以看到,我们已经成功把代码克隆到家里的电脑,但是我们继续开发要在dev分支上举行怎么办,此时只有master分支。

4、git pull

我们就可以通过以下流程举行切换到dev上举行开发:

这个origin在我们举行git clone URL的时候,就已经默认给这个URL起了别名叫origin,以是可以直接用

如许就可以在家里的电脑举行继续在dev分支举行写代码啦:


到了公司之后在把代码从dev上拉下来继续开发,如下:


上面总结:
码云使用:
   1、注册账户 + 创建项目 + 拷贝地址https://gitee.com/shliang/test_git.git
2、在公司当地代码推送长途
  
  3、到家
  
  
五、git开发规范

口试题3:
题目:在公司怎么举行协同开发的呀?
   答:为每个人创建一个分支
  
     
    每个开发员把本身分支的代码都合并到review分支,组长负责检测review分支有没有题目,没有题目之后在合并到dev
  口试题4:公司是否做代码的review(回首 / 查抄)? 谁做review?
答:组长,一般2天左右做一次review
口试题5:你有没有给开源的项目贡献过代码?

1、github 的fork和pull request

口试题6:例如Django项目标创建者(此时已经和核心成员已经够了,不可能邀请你在一起开发啦),但是此时你怎么给别人贡献代码?

2、git之gitignore


gitignore书写规则,github官网上就有,搜刮gitignore就进去啦,默认会忽略哪些文件,按照规则写就可以。也可以在创建堆栈的时候选择gitignore,就会自动创建这个文件。
3、git tag

用于定义不同的版本V1, V2 …, git tag
·发起:
   假如英语不太好,先用码云,然后用熟了在用github,如许就可以去对应的位置找到相应的功能
  作业:
模仿本身创业,协同开发

肯定不要将公司的代码放到本身的github账户上
参考:
1、https://www.cnblogs.com/wupeiqi/p/7295372.html
2、https://www.liaoxuefeng.com/wiki/896043488029600





♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4