【安装与介绍】

# 代码管理软件
    -git
    -svn

# 用来做代码管理 [文件管理]
    1 帮助开发者合并开发的代码,协同开发
    2 如果出现冲突代码的合并,会提示后提交合并代码的开发者,让其解决冲突
    3 代码版本管理

--------------------------------------------

# git 与svn比较
    svn:集成式管理,服务端挂掉就做不了版本管理,代码合并
    git:分布式管理,服务端挂掉,本地还可以继续做版本管理,代码合并

git与svn比较

 

 

 git的工作流程

 

2.Git 的下载

这个就需要去 Git 官网下载对应系统的软件了,下载地址为 git-scm.com或者gitforwindows.org,或者阿里镜像
上面的 git-scm 是 Git 的官方,里面有不同系统不同平台的安装包和源代码,而 gitforwindows.org 里只有 windows 系统的安装包
阿里镜像直接Ctrl+F 搜索最新版本前缀即可,如2.40.0

 

2.2 Git 的安装

我下载的版本是 Git-2.40.0-64-bit.exe,接下来我们就对这个版本进行安装工作。
————————————————

文章内容来自此博主原文链接:https://blog.csdn.net/mukes/article/details/115693833

双击下载后的 Git-2.40.0-64-bit.exe,开始安装,这个界面主要展示了 GPL 第 2 版协议1的内容,点击 [next] 到第二步

 

选择安装组件

图中这些英文都比较简单,我已经把大概意思翻译出来了,大家根据自己的需要选择勾选。点击 [next] 到第四步

然后一路next到最后

 。

这是安装成功后开始菜单里面的图。

 【更详细的,我觉得比较好的一篇介绍,来自这个博主“:创建版本库 - 廖雪峰的官方网站 (liaoxuefeng.com)

 

【git,gitee,gitlab】

1 Git:是一种版本控制软件,是一个命令,是一种工具。
2 
3 -----
4 GitHub:是一个基于Git实现的在线代码托管仓库,包含一个网站界面,向互联网开放,公有仓库免费,部分私有仓库收费,全球最大的开源代码托管平台--》git的远程仓库
5 
6 Gitee:(码云) 是 OSCHINA 推出的代码托管平台,支持 Git 和 SVN,提供免费的私有仓库托管,面向互联网开发,分收费和付费,中国最大的开源代码托管平台
7 
8 GitLab:是一个基于Git实现的在线代码仓库托管软件,可以通过GitLab自己搭建一个类似于GitHub一样的系统,用在企业内部网络搭建Git私服,用于企业团队内部协作开发

git使用流程

 

git常用命令

  1 # 1 将已有的文件夹 - 初始化为git仓库
  2 """
  3 >: cd 目标文件夹内部
  4 >: git init
  5 """
  6 # 2 在指定目录下 - 初始化git仓库
  7 """
  8 >: cd 目标目录
  9 >: git init 仓库名
 10 """
 11 # 3 在仓库目录终端下 - 设置全局用户
 12 """
 13 >: git config --global user.name '用户名'
 14 >: git config --global user.email '用户邮箱'
 15 
 16 注:在全局文件 C:\Users\用户文件夹\.gitconfig新建用户信息,在所有仓库下都可以使用
 17 """
 18 # 4 在仓库目录终端下 - 设置局部用户
 19 """
 20 >: git config user.name '用户名'
 21     -- 用户名
 22 >: git config user.email '用户邮箱'
 23     -- 用户邮箱
 24     
 25 注:在当前仓库下的config新建用户信息,只能在当前仓库下使用
 26 注:一个仓库有局部用户,优先使用局部用户,没有配置再找全局用户
 27 """
 28 # 5 查看仓库状态
 29 """
 30 # 当仓库中有文件增加、删除、修改,都可以在仓库状态中查看
 31 >: git status  
 32     -- 查看仓库状态
 33 >: git status -s  
 34     -- 查看仓库状态的简约显示
 35 """
 36 # 6 工作区操作
 37 # 通过任何方式完成的文件删与改
 38 # 空文件夹不会被git记录
 39 撤销工作区操作:改、删(了解)
 40 """
 41 >: git checkout .
 42     -- 撤销所有工作区变化
 43 >: git checkout 文件名
 44     -- 撤销某一文件的暂存区提交
 45 """
 46 # 7 工作区内容提交到暂存区
 47 """
 48 >: git add .  
 49     -- 添加项目中所有文件
 50 >: git add 文件名  
 51     -- 添加指定文件
 52 """
 53 # 8 撤销暂存区提交:add的逆运算(很少使用)
 54 """
 55 >: git reset HEAD .
 56     -- 撤销所有暂存区的提交
 57 >: git reset 文件名
 58     -- 撤销某一文件的暂存区提交
 59 >: git reset .
 60     -- 撤销所有暂存区的提交
 61 """
 62 
 63 # 9 提交暂存区内容到版本库
 64 >: git commit -m "版本描述信息"
 65 
 66 
 67 # 10 其它
 68 """
 69 回滚暂存区已经提交到版本库的操作:
 70     查看历史版本:
 71         >: git log
 72         >: git reflog
 73     查看时间点之前|之后的日志:
 74         >: git log --after 2018-6-1
 75         >: git log --before 2018-6-1
 76         >: git reflog --after 2018-6-1
 77         >: git reflog --before 2018-6-1
 78     查看指定开发者日志
 79         >: git log --author author_name
 80         >: git reflog --author author_name
 81     回滚到指定版本:
 82         回滚到上一个版本:
 83             >: git reset --hard HEAD^
 84             >: git reset --hard HEAD~
 85         回滚到上三个版本:
 86             >: git reset --hard HEAD^^^
 87             >: git reset --hard HEAD~3
 88         回滚到指定版本号的版本:
 89             >: git reset --hard 版本号 (重点)
 90             >: eg: git reset --hard 35cb292
 91 """
 92 # 11 扩展阅读
 93 # git log 和git reflog的区别
 94 git log 命令可以显示所有提交过的版本信息
 95 如果感觉太繁琐,可以加上参数  --pretty=oneline,只会显示版本号和提交时的备注信息
 96 git reflog 可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作)
 97 
 98 
 99 # git reset --hard,--mix,--soft的区别
100 hard (硬)-> 全部删除,会彻底返回到回退前的版本状态,了无痕迹
101 mixed (中)-> 保留工作目录,文件回退到未commit的状态
102 soft (软)-> 保留工作目录、暂存区 ,文件会回退到未 add(未到暂存)的状态
103 总结:
104 soft是撤销commit的提交,但工作区未提交的更改还是保留;
105 mixed是撤销暂存区的提交,工作区的更改同样也保留;
106 而hard是把工作区、暂存区、commit到仓库的三个版本都回滚了

 。

git忽略问题

 1 """ 过滤文件内容
 2 文件或文件夹名:代表所有目录下的同名文件或文件夹都被过滤
 3 /文件或文件夹名:代表仓库根目录下的文件或文件夹被过滤
 4 
 5 例如:
 6 a.txt:项目中所有a.txt文件和文件夹都会被过滤
 7 /a.txt:项目中只有根目录下a.txt文件和文件夹会被过滤
 8 /b/a.txt:项目中只有根目录下的b文件夹下的a.txt文件和文件夹会被过滤
 9 *x*:名字中有一个x的都会被过滤(*代表0~n个任意字符)
10 空文件夹不会被提交,空包会被提交,包可以被提交(包中有一个init空文件)
11 
12 
13 注意:
14 # 以'#'开始的行,被视为注释.                                                                                                                          
15 # 忽略掉所有文件名是 lqz.txt的文件.
16     lqz.txt
17 # 忽略所有生成的 html文件,
18 *.html
19 # lqz.html是例外,不在忽略范围内
20 !lqz.html
21 # 忽略所有.o和 .a文件.
22 *.[oa]
23 
24 """
25 
26 *********************************************
27 我们的项目忽略文件  .gitignore(必须叫这个文件名)
28 .idea
29 *.log
30 *.pyc
31 __pycache__
32 **/migrations/*.py
33 !**/migrations/__init__.py
34 .venv
35 scripts
36 db.sqlite3

git多分支

# 为什么要有分支
    -可以保证,主分支的版本都是可以查看的版本
    -我们都在开发分支开发,开发完成,合并到主分支
        -一般公司都会有master主分支,dev开发分支,bug修复分支

# 分支操作:
1.创建分支
    git branch 分支名

    2.查看分支
    git branch

    3.切换分支
    git checkout 分支名

    4.创建并切换到分支
    git checkout -b 分支名

    5.删除分支
    git branch -d 分支名

    6.查看远程分支(列出所有分支,包含远程)
    git branch -a

    7.合并分支
    git merge 分支名
    把dev分支合并到master分支:切换到master分支,执行合并dev分支的命令

git 远程仓库

 1 远程:
 2     1 远程要创建仓库:gitee上创建仓库,右上角 +
 3     2 填一些信息,保证仓库是空的
 4 
 5 本地:
 6     1 安装远端提示的步骤操作
 7     2 设置用户和邮箱  # 要设置和gitee的用户与邮箱一样
 8     3 咱们是已有仓库  先 cd luffy_api
 9 
10     4 添加一个远程仓库,远程仓库地址名字叫origin,地址就是网址
11        git remote add origin https://gitee.com/towards-the-cloud/luffytest.git                    
12 
13     5 把本地的版本库推送到远程仓库
14         # 把本地当前所在分支,推送到 origin对应的远程的master上
15         git push origin master
16 
17     6 需要输入用户名密码,输入一次,以后就不用输入了
18           (因为本地保存了:windows里面有凭据管理)

 。

【 ssh链接远程仓库】

 1 #  输入了用户名密码------》才可以提交代码上去--------》
 2 #  使用的是https的协议提交的代码-----它需要输入用户名和密码
 3 
 4 ---------------------------------------------
 5 ---------------------------------------------
 6 
 7 # 咱们要使用ssh方案:需要公钥和私钥------》公司里这种方式多
 8     私钥在本地保存
 9     公钥配置到gitee上
10     以后再提交代码,不需要其他任何认证了,密码不用输了
11 
12 
13 # 生成公钥私钥操作步骤:
14 
15 -1 在cmd命令窗口中执行 ssh-keygen -t ed25519 -C "1922517453@qq.com"
16     一路回车
17     -生成在:c/Users/靳小洁/.ssh  两个文件,一个公钥,一个私钥
18 
19 -2 把公钥,配置在gitee上-----设置------SSH公钥
20     复制公钥粘贴到gitee的SSH公钥里面去
21     之前origin对应的地址是 https的,
22     现在要使用ssh提交代码,需要把它删除,再增加成ssh的协议
23         在命令行里面输入命令
24         git remote remove origin  # 先删掉原来的hhtp地址名的origi
25             git remote add origin git@gitee.com:towards-the-cloud/luffytest.git
26             git push origin master
27 
28 
29 **********************************
30 你进公司使用流程
31     -1 生成公钥私钥
32     -2 gitlab--》注册个账号--》别人帮你注册了:账号,密码,gitlab地址
33         -你领导会把你要开发的项目,你做成开发者
34     -3 拿着账号密码--》登录到gitlab上--》找到ssh配置,把你的公钥配置在gitlab账号上
35     -4 把项目拉取到本地:
36         git clone git@gitee.com:xxx/项目名.git
37         git add remote origin git@gitee.com:xxx/项目名.git
38     -5 正常写功能
39         git add 
40         git commit
41     -6 推送到远端
42         git pull origin master# 协同开发,别人提交了代码--》通过这个拉去最新代码
43         git push orign master

协同开发

 1 # 我[仓库管理员]创建了仓库,我对仓库有各种权限
 2 
 3 # 我们要多人开发(张三,李四),张三李四在自己的仓库中,能看到我的项目吗?看不到
 4 
 5 # 我[仓库管理员],把张三李四设置为该仓库的开发者,设置完成后,
 6 # 在张三李四的仓库中就能看到这个项目了
 7 
 8 -------------------------------------------------
 9 
10 # 仓库管理员,邀请开发者进入
11     -邀请的开发者,对这个仓库就有读写权限,他们就可以开发代码,提交
12 
13 
14 # 开发者,本地没有代码,需要把代码从远程仓库拉下来
15 
16 1 把代码从远程仓库 clone 下来
17     https://gitee.com/towards-the-cloud/luffytest.git
18 
19 2 使用pycharm打开,配置好解释器,安装依赖
20 3 开发代码,开发完
21     git add .
22         # 设置用户名和邮箱,设置局部,在.git里面的config里面能看到
23     git config user.name xxx
24     git config user.email 1@qq.com
25     # 如果不设置,就用全局的C:\Users\靳小洁\.gitconfig
26 
27     git commit
28     git push origin master   # 开发者贡献代码后再推到远程仓库去!!
29 
30 
31 -------------------------------------------
32 -------------------------------------------
33 
34 # 你刚去公司,你的步骤
35 1 自己注册,hr给你 gitlab 账号和密码
36     -自己去你的账号里,配置ssh
37 
38 2 老大会把一个仓库地址给你 【它已经把你加成开发者了】  https  ssh
39 
40 3 clone下来代码,建个文件夹 执行命令  git clone 仓库地址
41 
42 
43 4 使用pycharnm打开,配置环境-------保证代码能运行起来
44 
45 5 开发代码,本地提交---》push到远端
46     add
47     commit
48     push

 

 

。库管理员邀请开发者进入,可以直接用邮箱添加,也可以通过连接邀请
复制连接发给要邀请的人,别人点击就自动变成开发者了,
当然可以把需要管理员审核的框勾上

 。

冲突解决

# 出现冲突的原因
    1 多人在同一分支开发
    2 分之合并出现冲突

-------------------------------------------

# 首先为什么要pull往下拉代码,因为你一开始从远程仓库克隆的代码
# 在加代码的过程中,可能别人也在一直往master主分支里面贡献代码
# 当你想将代码提交到远程仓库的时候,可能master已经被别人升了好几版了
# 这个时候你的master已经不是最新的了,你推不上去的!!!
# 所以要你先将远程仓库最新的代码pull下来,自动与自己的代码合并
# 然后你才能再往远程的仓库上推!!!
 1 # 多人在同一分支开发冲突
 2 -张三:
 3     git pull origin master
 4     在requirements.txt,最后一行加入 lqz
 5     git add .
 6     git commit -m''
 7     git push origin master
 8 
 9 ------------------
10 -我:
11     在requirements.txt,最后一行加入 lqz
12     git add .
13     git commit -m''
14     git pull origin master   # 拉最新代码下来自动与自己代码合并
15     # 冲突了,代码飘红
16     # 解决冲突:
17     # 阅读代码,选择保留或删除别人或自己的代码,
18     # 去掉飘红的冲突的箭头, 再执行add commit 后
19     # 提交到远程仓库 git push origin master
20     # 这样你的版本就推上去了!!!
21 
22 # 冲突出现的样子:你如果要删除别人的代码,你需要跟别人说一声
23     <<<<<<< HEAD   我的代码
24     print('刘亦菲')
25     =======   它的代码
26     print('彭于晏')
27     >>>>>>> 6f720edbd84c8744b1c7c10767fb89a5d0fa98f5
28 
29 -----------------------------------------
30 
31 # 避免出现冲突!!!!!!
32     -你如果想少出现冲突,勤拉取代码 git pull origin master
33     保证自己代码是最新的
34 
35 
36 =========================================
37 # 冲突出现的原因2,分支合并出冲突
38 -我:
39 1 创建dev分支
40     git branch dev
41 
42 2 在dev分支的views.py 中第2行加入代码 print('heihei')
43 
44 3 提交到本地仓库
45 
46 --------------------------------------
47 -我:
48 1 在主分支的views.py 中第2行加入代码 print('hahaha')
49 2 提交到版本库
50 
51 3 在主分支合并代码  git merge dev
52 
53 4 冲突了,看飘红的地方代码,解决飘红的地方,确认保留谁的或是都要
54 5 再提交代码,到此结束
55 
56 ----------------------------------------
57 总结就是:
58 
59 如果主改了一个地方,支也改了同一个地方,支往主里面合并的时候
60 这个时候git不知道要保留谁的,就会出冲突提示你,去解决
61 但是如果主没变化,支增删改操作,支往主里面合并的时候,主也对应的改掉了
62 
63 同理拉代码与自己代码合并的时候也是一样,你的文件没改,
64 拉下来的文件改了,一合并你的文件也改了,你的文件没删,
65 拉下来的文件删了一些代码,一合并你的对应的代码也删掉了
66 只有你的代码和拉下来的代码都改的同一个地方的时候,
67 git分不清要保留谁的,就会起冲突,提示你来解决

 。

线上分支合并

#本地dev分支合并到本地master上

# 远程(线上)分支合并

#####本地和线上分支同步################
#### 远程创建分支,拉取到本地####
	-远程创建分支,拉取到本地
    	-点点点创建
    -在本地执行:
    	git pull origin  # 拉下来,但是看不到,只有切进去才能看到
        git checkout bug
        
###### 本地创建,推送到远端#####
	-本地创建分支
    	git branch dev01
        git checkout dev01 # 切到dev分支
        git push origin dev01 # 把本地当前分支,推动到远端dev分支
              
        
# 线上分支合并
	-本地dev01分支加入代码,本地提交,推送到远端
    
    -在远端:完成分支合并
    	-把dev01代码合并到master中
        -在远端提交pullrequets--》简称pr
        -管理员同意即可合并
        
        
# 分支合并叫法
	-1 pr    #github,gitlab 简称
    -2 gitlab:mr # merge request 的简称

gitee上,新建一个分支

 

 

 

 。

【pycharm使用git】

1.1 先配置pycharm使用git

提交所有变化文件的操作

 提交一个文件操作

确认操作,也是如果只点击文件,就是确认一个文件,
如果点击文件夹,就是确认文件下所有的变化

 

 双击一下文件,就可以看到,版本变化,加个注释,点击确认

 拉去最新代码与自己代码合并

 

 本地仓库代码推远程仓库

 点勾,可以直接跳过add 并且再点commit and push
就可以直接推到远程仓库去了

 

 如果git的路径没有添加到环境变量,这里就需要
选择到 bin/git.exe 配置好git安装路径

 右下角的分支操作按钮,点击想要切换到的分支,checkout ,就切换过去了
所有本地与远程的分支操作,都在左下角

新增 删除 修改 远程仓库地址的名字

 代码的对比,能看到每次版本修改的地方

 

还可以让历史版本与当前版本作对比

 

 查看用户提交的代码记录

使用pycharm快捷从git上克隆项目代码

 .

为开源项目贡献代码

 

# github,gitee 看到好的开源项目,  发现有bug,为他增加新功能---》你加入了代码---》想合并进开源项目,如何做

# 步骤:
    1 先fork开源项目--》复制这个项目到我的远程仓库中
    2 clone下来,改代码,一路提交到我的远程仓库中
    3 提交pr,等作者同意

先fork开源项目,到我的远程仓库中

 

 

 clone下来,改代码,一路提交到我的远程仓库中 提交pr,等作者同意

 

 

 。

【gitlab使用】

#1  如何搭建(运维)
https://zhuanlan.zhihu.com/p/413217715

# 2 使用地址
http://192.168.1.252/


# 3 在公司里,基本都是用gitlab
    -超级管理员:你没有权限
        -root
        -lqz123456
        
        
# 4 之前所有操作,跟操作gitee是一样的

 。

远程仓库如果不为空

# 1 远端你仓库不为空
# 2 clone下来
git clone
# 3 把我们项目的东西,除了 .git 以外,都复制过去
# 4 正常操作即可

 。

 git面试题

面试题
    -1 你在公司使用git流程
        -公司使用了git多分支
          -master,dev,bug
        -开发新功能:大家都在dev开发,新功能开发完了,合并到主分支
        -如果老版本有bug,开一个bug分支,修复bug---》修复完合并到主分支
        -基于主分支这个版本:发布新版本
        -一周左右一个版本
        -具体一点:修改了代码,git add ,git commit ,git push 推送到远程仓库
        
    -2 git pull 和 git fetch 有什么区别
        -git pull = git fetch + merge
        
    -3 知道git flow (git 工作流),不建议面试的时候说
        -git 的分支方案

 

posted on 2024-05-11 22:25  认真的六六  阅读(12)  评论(0编辑  收藏  举报