git安装与使用

git介绍和安装

复制代码
# 代码管理软件
    -git
    -svn
    
# 他们能做的事情---》咱们用来做代码管理 [文件管理]
    1 帮助开发者合并开发的代码,协同开发
    2 如果出现冲突代码的合并,会提示后提交合并代码的开发者,让其解决冲突
    3 代码版本管理
    
    
# git 与svn比较
    svn:集成式管理,服务端挂掉就做不了版本管理,代码合并
    git:分布式管理,服务端挂掉,本地还可以继续做版本管理,代码合并
复制代码

git,gitee,github,gitlab

复制代码
# git:版本管理软件,装在操作系统上,有很多命令
# gitee:远程仓库:开源代码,私有代码,有个网站,可以看到有哪些开源代码,通过网站做一些配置
    -国内最大的开源远程仓库
    -小公司---》使用gitee的私有仓库
    
# github:远程仓库:开源代码,私有代码,有个网站,可以看到有哪些开源代码,通过网站做一些配置
    -国际上最大的开源远程仓库
    
# bitbucket:只有私有仓库
    -远程代码仓库

# gitlab:公司内部的远程仓库
复制代码

git使用流程

git 软件安装

# 双击 安装软件, 一路下一步安装完成
    -任意路径下点右键,多出两个东西
    -cmd :git 有反应

git工作流程

# 三个区
    -工作区    存放文件的地方
    -暂存区    工作区的变更,提交到暂存区
    -版本库    暂存区的内容,提交到版本库
    
    
# 三个区相互操作
    -下面学的命令,就是在操作这三个区

git常用命令

复制代码
#1 文件夹想被git管理,文件夹作为仓库
    # 先来到某个文件夹下敲
    git init   # 初始化仓库 ,当前文件夹多出 .git 文件夹,这个文件夹不要删,如果删除,这就不是git仓库了,之前的版本再也找不回来了,也不能被git管理
    
    
    git init xxx # 在上一级敲

# 2 查看文件变化   在  .git 所在文件夹下   [只看暂存区和工作区]
    git status
    # 看到有两种颜色
        -红色:工作区变化了,但是没有提交到暂存区
        -绿色:已经提交到暂存区,没有提交到版本库
        -没有:所有东西都在版本库中了[所有文件都被git管理起来了]
# 3 把工作区变更提交到暂存区
    git add 文件夹
    git add .   # 当前路径下所有变更都提交

# 4 把暂存区所有内容,提交到版本库作为一个版本
    git commit -m '提交了1.txt'
    
    
    
# 5设置作者(全局,局部)
    # 全局的意思是当前操作系统下所有仓库,提交到版本库时,都用这个作者
    # 局部只针对于当前仓库
  git config --global user.email "306334678@qq.com"
  git config --global user.name "liuqingzheng"

    
# 6 查看版本库版本信息
    -git log
    -git reflog   # 更精简一些
    
    
    
 ------了解
# 7 把工作区的变更,回退  【还没有放到暂存区】
    -增加的内容,删除
    git checkout .
# 8 把暂存区,拉回到工作区[由绿变红]
    git reset HEAD
------- 了解   
    
    
# 9 回到某个版本
    -只要被版本管理了,可以回退到任意版本
    git reset --hard 版本号
    
    
    
    
# 总结:
    记住的:
        git add  
        git commit -m
        git reset --hard 版本号
   会用:
        git init
        git status
        git log
        git reflog
        
   了解:
        git checkout .
        git reset HEAD
        git config --global user.email "306334678@qq.com"
        
        
"""
1)有红色信息(工作区有内容),就执行 add 
2)全绿信息(内容全部在暂存区),才执行 commit
3)只有被版本库控制的代码,才能被监听,所以可以回滚到任何一个版本
空文件夹不会被git记录
"""
复制代码

git忽略文件

复制代码
# 咱们项目中,有些文件,或文件夹不想被git管理
    -比如:
        - node_models
        - .idea
        - xx.pyc  # python 的编译文件       
        
# 使用步骤
    -1 在仓库目录下  .git 所在目录下   新建  .gitignore
    -2 在里面写忽略文件
        mode_models
        .idea
        *.pyc
        *.log
    -3 写的就会被忽略
 
    -4 已经被管理过的不会被忽略
    
# 忽略文件写法
文件或文件夹名:代表所有目录下的同名文件或文件夹都被过滤
/文件或文件夹名:代表仓库根目录下的文件或文件夹被过滤

例如:
a.txt:项目中所有a.txt文件和文件夹都会被过滤
/a.txt:项目中只有根目录下a.txt文件和文件夹会被过滤
/b/a.txt:项目中只有根目录下的b文件夹下的a.txt文件和文件夹会被过滤
*x*:名字中有一个x的都会被过滤(*代表0~n个任意字符)
空文件夹不会被提交,空包会被提交,包可以被提交(包中有一个init空文件)
复制代码

 git多分支

复制代码
# 1.为什么要有分支
 - 可以保证,主分支的版本都是可以查看的版本
 - 我们都在开发分支开发,开发完成后1才会合并到主分支

# 2.分支操作
 - 查看分支
      git branch
 - 创建分支
      git branch 分支名
      git branch dev
 - 切换分支
      git checkout dev         # 切换到dev分支
 - 删除分支
      git branch -d dev
 - 合并分支(重要) :分支合并可能会起冲突
       -1. 把dev合并进master
       -2.来到master分支:
             git branch checkout master
       -3.执行合并命令:
             git merge dev     # 把dev合并到master身上

# 3.公司里的分支方案(小公司)
 - master分支,dev分支,bug分支,所有人在dev分支开发,开发完成合并到主分支
 - master分支,dev分支,bug分支,个人分支,个人在个人分支上开发,开发完成合并到dev分支
复制代码

git远程仓库

复制代码
# 1.把本地的版本提交到远程仓库
    - gitee,github,gitlab...
# 2.gitlab搭建过程
    - https://zhuanlan.zhihu.com/p/413217715
# 3.在本地把代码提交到远程仓库gitee
    - 操作步骤:
       -> 1.本地:
            -1. 在luffy_api敲git init
            -2. 设置忽略文件(.gitignore)
            -3. git add .
            -4. git commit -m '第一次提交'
            ————提交到本地版本库:被版本管理了————
       -> 2.远程:
            - 1. gitee界面,右上角+ 点击创建
            - 2.填写一些信息保证仓库是空的
       -> 3.本地
            - 1.安装远端提示的步骤操作
            - 2.设置用户的邮箱
            - 3.已有仓库的话按下面指令操作
                    - cd luffy_api
                    # 添加一个远程仓库地址名字叫origin,地址是xxx
                    - git remote add origin https://gitee.com/juzijunjun/luffy_api.git
                    # 把本地版本库推送到远程仓库
                    # 把本地当前所在分支,推送到origin对应的远程的master上
                    - git push origin master
                    # 需要输入用户名密码,输入一次,以后就不用再输入了(本地保存:凭据管理)


# 4.如果提交了,再写忽略文件的步骤
    - luffy.log--->暂存区--->版本库
    - .gitignore--->写上忽略,但是不好被忽略,只要luffy.log有变化还是会被监控到
    - 删除luffy.log--->会被监控到--->add
    - commit--->版本库中已经没有luffy.log
    - 再出的luffy.log就不会再被管理了
复制代码

 

 

 

ssh方式连接远程仓库

复制代码
# 1.提交代码到git远程仓库上(使用的是https协议提交的代码)
    - 需要输入用户名的密码
# 2.但是一般使用ssh方式:设置公钥私钥
    - 私钥保存到本地
    - 公钥配置到gitee
    - 配置成功后,提交代码到远程仓库,无需认证
# 3.使用步骤
    - 生成公钥私钥
         - https://gitee.com/help/articles/4181
         - 在命令窗口中执行,一路回车
         - ssh-keygen -t ed25519 -C  "1585801492@qq.com" 
         - 生成在:C:\Users\Administrator\.ssh路径下,有两个文件,一个公钥,一个私钥
    - 把公钥,配置在gitee上
    - 之前origin对应的地址是https的,现在使用ssh提交代码,需要把其删除,再增加成ssh的协议
         - git remote remove origin
         - git remote add origin git@gitee.com:juzijunjun/luffy_api.git
        
复制代码

协同开发

复制代码
# 仓库管理员创建了仓库
- 其它角色对仓库有各种权限
# 多人开发
- 开发人员在自己仓库中无法看到开发的项目
# 仓库管理员设置角色成为仓库的开发者
- 设置完成后,开发人员就可以看见这个项目了
# 1.仓库管理员,邀请开发者进入 - 被邀请的开发者,对该仓库拥有读写权限,可以开发代码,提交 # 2.作为开发者,本地没有代码 - 1.把代码从远程仓库clone下来 git clone git@gitee.com:juzijunjun/luffy_api.git - 2.使用pycharm打开,配置好解释器,安装依赖 - 3.开发代码,开发结束 - git add # 设置用户名和邮箱 - git config user.name juzi - git config user.email 1585801492@qq.com - git commit - git push origin master
复制代码

冲突解决

复制代码
# 1.出现冲突的原因
   - 1.多人在同一分支进行开发
   - 2.分支合并时出现冲突

# 2.多人在同一分支开发冲突
   - 角色:张三
        git pull origin master
         在requirements.txt,最后一行加入 lqz
        git add .
        git commit -m
        git push origin master

   - 角色:我
        在requirements.txt,最后一行加入 lqz
        git add . 
        git commit -m
        git pull origin master
   """
   冲突了:解决冲突,冲突的箭头去掉,阅读代码,选择保留或者删除别人或自己的代码,在进行提交。解决后提交到远程仓库
   """

# 3.出现冲突的样子:
    <<<<<<< HEAD   我的代码
    print('刘亦菲')
    =======            它的代码
    print('彭于晏')
    >>>>>>> 6f720edbd84c8744b1c7c10767fb89a5d0fa98f5
    
# 4.如何避免出现冲突
    - 少出现冲突需要,勤拉取代码

# 5.分支合并出现冲突
    - 角色:我
        -1. 创建dev分支
              git branch dev
        -2. 在dev分支的views.py 
              在第2行加入代码 
        -3. 提交到本地仓库
    
    - 角色:我
        -1. 在主分支的views.py
               在第二行加入代码
        -2. 提交到版本库
        -3. 在主分支合并代码 
               git merge dev
        -4. 冲突了,解决冲突
        -5. 提交代码到仓库,结束                    
复制代码

线上分支合并

复制代码
# 1.线下分支合并
   git merge dev
# 2.线上分支合并
   - 1.gitee上,新建一个分支。
   - 2.本地同步远程dev分支
        # 拉下来了,还看不到,只有切过去,才看得到
        - git pull origin def  
        - git checkout dev
   - 3.在dev上开发
        - git add
        - git commit
        # 提交到本地的dev了       
   - 4.推到远端dev
        - git push origin dev
   - 5.master中没有代码,dev中有提交的,现在要线上分支合并
   - 6.把远程的dev合并进远程的master
   - 7.提交pr,提交rr
   - 8.在网站上,申请提交pull request
   - 9.领导审核,测试,通过后,点击合并
   - 10.线上dev就合并到线上的master
         
复制代码

远程仓库回滚

# 1.尽量不要用
# 2.远程仓库回滚可以让,远程的代码回到最初的状态
# 3.步骤:
    -1. 本地版本回退
       git reset --hard 版本号
    -2. 强制推到远端
       git push origin master -f

 为开源项目贡献代码

# github,gitee看到好的开源项目,发现有bug,为他增加新功能。想合并到开源项目,如何做?

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

 

posted @   橘子菌菌n  阅读(43)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示