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  

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

原文地址:https://www.cnblogs.com/mmmqqdd/p/12865954.html