• Git学习笔记


    Git学习笔记

    学习笔记用来帮助自己记忆,而不是帮助别人学习.


    初次运行git前的配置

    配置文件所在位置

    1. 系统配置: /etc/gitconfig
    2. 当前用户配置: ~/.gitconfig~/.config/git/config
    3. 当前仓库配置: .get/config

    基础命令

    1. 查看所有配置文件所在位置:

      $ gitconfig --list --show-origin 
      
    2. 修改用户名和地址:

      $ git config --global user.name "John Doe"
      $ git config --global user.email 1045723308@qq.com
      
    3. 设置编辑器(比如vim、emacs等):

      $ git config --global cor.editor "emacs" 
      
    4. 查看配置信息

      $ git config --list
      
    5. 查看某一项配置(比如user.name)

      $ git config --liset user.name
      

    分支的用法

    分支操作的适用场景

    开发一个项目时,需要将项目分工,所有人一起做一个一个项目,所以上传到同一个远端仓库.

    这时候就有问题了,比如支付宝项目,假如小明时写前端的代码,他把自己的代码写好后,push(推到)远端仓库,会把别人写的后端代码覆盖吗? 这个时候就会出现报错.

    为了解决这个问题,就得用分支功能,也就是一个远端仓库出现很多暂时互不干涉的小仓库.最后做完了再将它们merge(合并).

    分支的基本概念

    一个仓库可以有很多分支,而且分支的名字都是自己取的,但是有一个master分支是仓库初始化的时候给的,这个就是我们所说的主分支.

    分支的基本操作

    1. 查看本地分支:git branch
    2. 查看所有分支: git branch -a
    3. 创建分支: git branch 分支名
    4. 切换分支: git checkout 分支名
    5. 合并分支: git merge 分支名A : 将分支A合并到主分支master.
    6. 删除分支: git branch -d 分支名
    7. 推送分支到远端: git push -u origin 分支名
    8. 克隆固定分支: git clone -b 分支名 远端地址

    分支的管理

    1. 查看所有分支最后一次提交:

      $ git branch -v
      
    2. 查看已经合并的分支和为合并的分支

      查看已经合并到当前分支的分支(包括自己)
      $ git branch --merged
      查看未合并到当前分支的分支
      $ git branch --no-merged
      

    冲突产生与解决

    1. 冲突产生的原因

      假设小明和小红同时更改了同一个分支的文件,然后小明先push没有问题,但是小红再push就报错了,为啥呢?想都想的到呀.

    2. 解决冲突

      先输入命令: git pull ,

      然后有冲突的文件就会把别人的更改和自己的更改都写出来,可以同时保留更改,也可以和把别人的更改撤销.当然,最好和别人商量一下.

    3. 建议

      上班先git pull,可以有效的避免冲突. 但是遇到冲突也不要怕,按步骤处理即可.

    本地创建仓库如何与远端仓库合并?

    这个问题困扰了我很久,因为本地仓库和远端仓库没有公共祖先所以直接pull会出现问题.

    并且由于我一直对分支了解不太透彻,导致越来越晕.


    概念梳理

    1. 分支分为本地分支远端分支,通过$git branch -a 可以看到所有分支.

    2. 本地分支需要与远端分支关联才能pull和push

    3. 关联之后本地会出现一个和远端同名的分支,这个分支就是合并之后的分支

      比如 git pull origin master --allow-unrelated-histories就是将远端的master 和本地当前分支合并,合并成功后,本地就会出现一个master分支(本来就有,我还不知道会发生什么)

    情景分类

    1. 文件在远端仓库,本地仓库是空的
    2. 文件在本地仓库,远端仓库时空的
    3. 本地和远端都有文件

    解决上述问题

    第一种最好解决,直接 git clone即可. 直接讲第三种吧,因为第二种是一个子问题.

    将远端的master与当前分支合并(这里记得切换到想要合并的分支) ,后面一串意思是允许两个分支没有公共祖先,就是毫无关系. 下面的master 可以改成你想要的远端分支.
    $git pull origin master --allow-unrelated-histories  
    

    好像这样就可以了,总感觉有什么没写,下次想到再补上吧.

  • 相关阅读:
    ubuntu用mentohust连接ruijie
    vim系统剪切板
    JSP 页面中用绝对路径显示图片
    response.setContentType与 request.setCharacterEncoding 区别
    安装mysql数据库要注意的
    eclipse link方式安装插件安装不上
    Windows程序调用dll
    DP 问题
    LeetCode Repeated Substring Pattern
    LeetCode Number of Segments in a String
  • 原文地址:https://www.cnblogs.com/mmmqqdd/p/12865954.html
Copyright © 2020-2023  润新知