标签: 指针

  • iOS之深拷贝与浅拷贝

    iOS之深拷贝与浅拷贝

    持续创作,加快生长!这是我参加「日新方案 10 月更文挑战」的第6天,点击查看活动详情

    (更多…)

  • 12W字;2022最新Android11位大厂面试专题(一)

    12W字;2022最新Android11位大厂面试专题(一)

    由于近期许多小伙伴开端面试了,所以在许多的刷题,也有许多问到我有没有一些大厂面试题或许常见的面试题,字节参阅一下,于是乎花了一周时刻整理出这份 《2022Android十一位大厂面试真题》 结合之前的 《腾讯Android开发笔记》 也算是左右开弓了!

    (更多…)

  • Rust 中的 trait 对象

    Rust 中的 trait 对象

    在上一节中有一段代码无法经过编译:

    (更多…)

  • iOS 组件化实践(一):中间层方案选择

    iOS 组件化实践(一):中间层方案选择

    iOS 组件化实践(一):中间层计划挑选

    (更多…)

  • git相关问题解析,你想要的都有🔥

    git相关问题解析,你想要的都有🔥

    git相关问题解析,你想要的都有
    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    官网文档: git-scm.com/doc

    (更多…)
    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    官网文档: git-scm.com/doc

    (更多…)
    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    官网文档: git-scm.com/doc

    (更多…)
    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    官网文档: git-scm.com/doc

    (更多…)
    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    官网文档: git-scm.com/doc

    (更多…)
    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    官网文档: git-scm.com/doc

    (更多…)
    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    官网文档: git-scm.com/doc

    (更多…)
    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    官网文档: git-scm.com/doc

    (更多…)
    git相关问题解析,你想要的都有
    1. 吊销本地分支与长途分支的联系

    git branch --unset-upstream

    1. 兼并分支
    git  checkout master    # 切换到master分支上
    git pull origin master  # 把长途分支pull下去,及时更新
    git  merge dev          # 把dev分支的代码兼并到master上
    git status              # 检查状况
    git push origin master  # push到长途分支
    

    本地库房一起相关多个远端库房(gitee, github, gitlab…)

    因为Git自身是分布式版别控制体系,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。

    运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin,假如有多个长途库,咱们需求用不同的称号来标识不同的长途库, 详细操作过程如下:

    1. 先删去已相关的名为origin的长途库:
    git remote rm origin
    
    1. 再相关GitHub的长途库:
    git remote add github git@github.com:all-smile/pc-web.git
    

    留意: 长途库的称号叫github,不叫origin了。

    1. 接着,再相关Gitee的长途库:
    git remote add gitee git@gitee.com:hey-u/pc-web.git
    

    相同留意,长途库的称号叫gitee,不叫origin。

    1. 检查长途库信息
    git remote -v
    gitee   git@gitee.com:hey-u/pc-web.git (fetch)
    gitee   git@gitee.com:hey-u/pc-web.git (push)
    github  git@github.com:all-smile/pc-web.git (fetch)
    github  git@github.com:all-smile/pc-web.git (push)
    
    1. 本地修正推送到远端
    • 推送到GitHub
    git push github master
    
    • 推送到Gitee
    git push gitee master
    

    也能够在运用NPM包管理东西的项目增加如下scripts脚本

    "scripts": {
        "pull": "git pull github master && git pull gitee master",
        "push": "git push github master && git push gitee master"
    },
    

    拉取/推送的时分运用

    npm run pull
    npm run push
    

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    官网文档: git-scm.com/doc

    (更多…)
    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有
    1. 吊销本地分支与长途分支的联系

    git branch --unset-upstream

    1. 兼并分支
    git  checkout master    # 切换到master分支上
    git pull origin master  # 把长途分支pull下去,及时更新
    git  merge dev          # 把dev分支的代码兼并到master上
    git status              # 检查状况
    git push origin master  # push到长途分支
    

    本地库房一起相关多个远端库房(gitee, github, gitlab…)

    因为Git自身是分布式版别控制体系,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。

    运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin,假如有多个长途库,咱们需求用不同的称号来标识不同的长途库, 详细操作过程如下:

    1. 先删去已相关的名为origin的长途库:
    git remote rm origin
    
    1. 再相关GitHub的长途库:
    git remote add github git@github.com:all-smile/pc-web.git
    

    留意: 长途库的称号叫github,不叫origin了。

    1. 接着,再相关Gitee的长途库:
    git remote add gitee git@gitee.com:hey-u/pc-web.git
    

    相同留意,长途库的称号叫gitee,不叫origin。

    1. 检查长途库信息
    git remote -v
    gitee   git@gitee.com:hey-u/pc-web.git (fetch)
    gitee   git@gitee.com:hey-u/pc-web.git (push)
    github  git@github.com:all-smile/pc-web.git (fetch)
    github  git@github.com:all-smile/pc-web.git (push)
    
    1. 本地修正推送到远端
    • 推送到GitHub
    git push github master
    
    • 推送到Gitee
    git push gitee master
    

    也能够在运用NPM包管理东西的项目增加如下scripts脚本

    "scripts": {
        "pull": "git pull github master && git pull gitee master",
        "push": "git push github master && git push gitee master"
    },
    

    拉取/推送的时分运用

    npm run pull
    npm run push
    

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    官网文档: git-scm.com/doc

    (更多…)
    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有
    1. 吊销本地分支与长途分支的联系

    git branch --unset-upstream

    1. 兼并分支
    git  checkout master    # 切换到master分支上
    git pull origin master  # 把长途分支pull下去,及时更新
    git  merge dev          # 把dev分支的代码兼并到master上
    git status              # 检查状况
    git push origin master  # push到长途分支
    

    本地库房一起相关多个远端库房(gitee, github, gitlab…)

    因为Git自身是分布式版别控制体系,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。

    运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin,假如有多个长途库,咱们需求用不同的称号来标识不同的长途库, 详细操作过程如下:

    1. 先删去已相关的名为origin的长途库:
    git remote rm origin
    
    1. 再相关GitHub的长途库:
    git remote add github git@github.com:all-smile/pc-web.git
    

    留意: 长途库的称号叫github,不叫origin了。

    1. 接着,再相关Gitee的长途库:
    git remote add gitee git@gitee.com:hey-u/pc-web.git
    

    相同留意,长途库的称号叫gitee,不叫origin。

    1. 检查长途库信息
    git remote -v
    gitee   git@gitee.com:hey-u/pc-web.git (fetch)
    gitee   git@gitee.com:hey-u/pc-web.git (push)
    github  git@github.com:all-smile/pc-web.git (fetch)
    github  git@github.com:all-smile/pc-web.git (push)
    
    1. 本地修正推送到远端
    • 推送到GitHub
    git push github master
    
    • 推送到Gitee
    git push gitee master
    

    也能够在运用NPM包管理东西的项目增加如下scripts脚本

    "scripts": {
        "pull": "git pull github master && git pull gitee master",
        "push": "git push github master && git push gitee master"
    },
    

    拉取/推送的时分运用

    npm run pull
    npm run push
    

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    官网文档: git-scm.com/doc

    (更多…)
    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有
    1. 吊销本地分支与长途分支的联系

    git branch --unset-upstream

    1. 兼并分支
    git  checkout master    # 切换到master分支上
    git pull origin master  # 把长途分支pull下去,及时更新
    git  merge dev          # 把dev分支的代码兼并到master上
    git status              # 检查状况
    git push origin master  # push到长途分支
    

    本地库房一起相关多个远端库房(gitee, github, gitlab…)

    因为Git自身是分布式版别控制体系,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。

    运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin,假如有多个长途库,咱们需求用不同的称号来标识不同的长途库, 详细操作过程如下:

    1. 先删去已相关的名为origin的长途库:
    git remote rm origin
    
    1. 再相关GitHub的长途库:
    git remote add github git@github.com:all-smile/pc-web.git
    

    留意: 长途库的称号叫github,不叫origin了。

    1. 接着,再相关Gitee的长途库:
    git remote add gitee git@gitee.com:hey-u/pc-web.git
    

    相同留意,长途库的称号叫gitee,不叫origin。

    1. 检查长途库信息
    git remote -v
    gitee   git@gitee.com:hey-u/pc-web.git (fetch)
    gitee   git@gitee.com:hey-u/pc-web.git (push)
    github  git@github.com:all-smile/pc-web.git (fetch)
    github  git@github.com:all-smile/pc-web.git (push)
    
    1. 本地修正推送到远端
    • 推送到GitHub
    git push github master
    
    • 推送到Gitee
    git push gitee master
    

    也能够在运用NPM包管理东西的项目增加如下scripts脚本

    "scripts": {
        "pull": "git pull github master && git pull gitee master",
        "push": "git push github master && git push gitee master"
    },
    

    拉取/推送的时分运用

    npm run pull
    npm run push
    

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    官网文档: git-scm.com/doc

    (更多…)
    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有
    1. 吊销本地分支与长途分支的联系

    git branch --unset-upstream

    1. 兼并分支
    git  checkout master    # 切换到master分支上
    git pull origin master  # 把长途分支pull下去,及时更新
    git  merge dev          # 把dev分支的代码兼并到master上
    git status              # 检查状况
    git push origin master  # push到长途分支
    

    本地库房一起相关多个远端库房(gitee, github, gitlab…)

    因为Git自身是分布式版别控制体系,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。

    运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin,假如有多个长途库,咱们需求用不同的称号来标识不同的长途库, 详细操作过程如下:

    1. 先删去已相关的名为origin的长途库:
    git remote rm origin
    
    1. 再相关GitHub的长途库:
    git remote add github git@github.com:all-smile/pc-web.git
    

    留意: 长途库的称号叫github,不叫origin了。

    1. 接着,再相关Gitee的长途库:
    git remote add gitee git@gitee.com:hey-u/pc-web.git
    

    相同留意,长途库的称号叫gitee,不叫origin。

    1. 检查长途库信息
    git remote -v
    gitee   git@gitee.com:hey-u/pc-web.git (fetch)
    gitee   git@gitee.com:hey-u/pc-web.git (push)
    github  git@github.com:all-smile/pc-web.git (fetch)
    github  git@github.com:all-smile/pc-web.git (push)
    
    1. 本地修正推送到远端
    • 推送到GitHub
    git push github master
    
    • 推送到Gitee
    git push gitee master
    

    也能够在运用NPM包管理东西的项目增加如下scripts脚本

    "scripts": {
        "pull": "git pull github master && git pull gitee master",
        "push": "git push github master && git push gitee master"
    },
    

    拉取/推送的时分运用

    npm run pull
    npm run push
    

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    官网文档: git-scm.com/doc

    (更多…)
    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有
    1. 吊销本地分支与长途分支的联系

    git branch --unset-upstream

    1. 兼并分支
    git  checkout master    # 切换到master分支上
    git pull origin master  # 把长途分支pull下去,及时更新
    git  merge dev          # 把dev分支的代码兼并到master上
    git status              # 检查状况
    git push origin master  # push到长途分支
    

    本地库房一起相关多个远端库房(gitee, github, gitlab…)

    因为Git自身是分布式版别控制体系,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。

    运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin,假如有多个长途库,咱们需求用不同的称号来标识不同的长途库, 详细操作过程如下:

    1. 先删去已相关的名为origin的长途库:
    git remote rm origin
    
    1. 再相关GitHub的长途库:
    git remote add github git@github.com:all-smile/pc-web.git
    

    留意: 长途库的称号叫github,不叫origin了。

    1. 接着,再相关Gitee的长途库:
    git remote add gitee git@gitee.com:hey-u/pc-web.git
    

    相同留意,长途库的称号叫gitee,不叫origin。

    1. 检查长途库信息
    git remote -v
    gitee   git@gitee.com:hey-u/pc-web.git (fetch)
    gitee   git@gitee.com:hey-u/pc-web.git (push)
    github  git@github.com:all-smile/pc-web.git (fetch)
    github  git@github.com:all-smile/pc-web.git (push)
    
    1. 本地修正推送到远端
    • 推送到GitHub
    git push github master
    
    • 推送到Gitee
    git push gitee master
    

    也能够在运用NPM包管理东西的项目增加如下scripts脚本

    "scripts": {
        "pull": "git pull github master && git pull gitee master",
        "push": "git push github master && git push gitee master"
    },
    

    拉取/推送的时分运用

    npm run pull
    npm run push
    

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    官网文档: git-scm.com/doc

    (更多…)
    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有
    1. 吊销本地分支与长途分支的联系

    git branch --unset-upstream

    1. 兼并分支
    git  checkout master    # 切换到master分支上
    git pull origin master  # 把长途分支pull下去,及时更新
    git  merge dev          # 把dev分支的代码兼并到master上
    git status              # 检查状况
    git push origin master  # push到长途分支
    

    本地库房一起相关多个远端库房(gitee, github, gitlab…)

    因为Git自身是分布式版别控制体系,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。

    运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin,假如有多个长途库,咱们需求用不同的称号来标识不同的长途库, 详细操作过程如下:

    1. 先删去已相关的名为origin的长途库:
    git remote rm origin
    
    1. 再相关GitHub的长途库:
    git remote add github git@github.com:all-smile/pc-web.git
    

    留意: 长途库的称号叫github,不叫origin了。

    1. 接着,再相关Gitee的长途库:
    git remote add gitee git@gitee.com:hey-u/pc-web.git
    

    相同留意,长途库的称号叫gitee,不叫origin。

    1. 检查长途库信息
    git remote -v
    gitee   git@gitee.com:hey-u/pc-web.git (fetch)
    gitee   git@gitee.com:hey-u/pc-web.git (push)
    github  git@github.com:all-smile/pc-web.git (fetch)
    github  git@github.com:all-smile/pc-web.git (push)
    
    1. 本地修正推送到远端
    • 推送到GitHub
    git push github master
    
    • 推送到Gitee
    git push gitee master
    

    也能够在运用NPM包管理东西的项目增加如下scripts脚本

    "scripts": {
        "pull": "git pull github master && git pull gitee master",
        "push": "git push github master && git push gitee master"
    },
    

    拉取/推送的时分运用

    npm run pull
    npm run push
    

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    官网文档: git-scm.com/doc

    (更多…)
    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有
    1. 吊销本地分支与长途分支的联系

    git branch --unset-upstream

    1. 兼并分支
    git  checkout master    # 切换到master分支上
    git pull origin master  # 把长途分支pull下去,及时更新
    git  merge dev          # 把dev分支的代码兼并到master上
    git status              # 检查状况
    git push origin master  # push到长途分支
    

    本地库房一起相关多个远端库房(gitee, github, gitlab…)

    因为Git自身是分布式版别控制体系,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。

    运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin,假如有多个长途库,咱们需求用不同的称号来标识不同的长途库, 详细操作过程如下:

    1. 先删去已相关的名为origin的长途库:
    git remote rm origin
    
    1. 再相关GitHub的长途库:
    git remote add github git@github.com:all-smile/pc-web.git
    

    留意: 长途库的称号叫github,不叫origin了。

    1. 接着,再相关Gitee的长途库:
    git remote add gitee git@gitee.com:hey-u/pc-web.git
    

    相同留意,长途库的称号叫gitee,不叫origin。

    1. 检查长途库信息
    git remote -v
    gitee   git@gitee.com:hey-u/pc-web.git (fetch)
    gitee   git@gitee.com:hey-u/pc-web.git (push)
    github  git@github.com:all-smile/pc-web.git (fetch)
    github  git@github.com:all-smile/pc-web.git (push)
    
    1. 本地修正推送到远端
    • 推送到GitHub
    git push github master
    
    • 推送到Gitee
    git push gitee master
    

    也能够在运用NPM包管理东西的项目增加如下scripts脚本

    "scripts": {
        "pull": "git pull github master && git pull gitee master",
        "push": "git push github master && git push gitee master"
    },
    

    拉取/推送的时分运用

    npm run pull
    npm run push
    

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    官网文档: git-scm.com/doc

    (更多…)
    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有
    1. 吊销本地分支与长途分支的联系

    git branch --unset-upstream

    1. 兼并分支
    git  checkout master    # 切换到master分支上
    git pull origin master  # 把长途分支pull下去,及时更新
    git  merge dev          # 把dev分支的代码兼并到master上
    git status              # 检查状况
    git push origin master  # push到长途分支
    

    本地库房一起相关多个远端库房(gitee, github, gitlab…)

    因为Git自身是分布式版别控制体系,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。

    运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin,假如有多个长途库,咱们需求用不同的称号来标识不同的长途库, 详细操作过程如下:

    1. 先删去已相关的名为origin的长途库:
    git remote rm origin
    
    1. 再相关GitHub的长途库:
    git remote add github git@github.com:all-smile/pc-web.git
    

    留意: 长途库的称号叫github,不叫origin了。

    1. 接着,再相关Gitee的长途库:
    git remote add gitee git@gitee.com:hey-u/pc-web.git
    

    相同留意,长途库的称号叫gitee,不叫origin。

    1. 检查长途库信息
    git remote -v
    gitee   git@gitee.com:hey-u/pc-web.git (fetch)
    gitee   git@gitee.com:hey-u/pc-web.git (push)
    github  git@github.com:all-smile/pc-web.git (fetch)
    github  git@github.com:all-smile/pc-web.git (push)
    
    1. 本地修正推送到远端
    • 推送到GitHub
    git push github master
    
    • 推送到Gitee
    git push gitee master
    

    也能够在运用NPM包管理东西的项目增加如下scripts脚本

    "scripts": {
        "pull": "git pull github master && git pull gitee master",
        "push": "git push github master && git push gitee master"
    },
    

    拉取/推送的时分运用

    npm run pull
    npm run push
    

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    官网文档: git-scm.com/doc

    (更多…)
    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有
    1. 吊销本地分支与长途分支的联系

    git branch --unset-upstream

    1. 兼并分支
    git  checkout master    # 切换到master分支上
    git pull origin master  # 把长途分支pull下去,及时更新
    git  merge dev          # 把dev分支的代码兼并到master上
    git status              # 检查状况
    git push origin master  # push到长途分支
    

    本地库房一起相关多个远端库房(gitee, github, gitlab…)

    因为Git自身是分布式版别控制体系,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。

    运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin,假如有多个长途库,咱们需求用不同的称号来标识不同的长途库, 详细操作过程如下:

    1. 先删去已相关的名为origin的长途库:
    git remote rm origin
    
    1. 再相关GitHub的长途库:
    git remote add github git@github.com:all-smile/pc-web.git
    

    留意: 长途库的称号叫github,不叫origin了。

    1. 接着,再相关Gitee的长途库:
    git remote add gitee git@gitee.com:hey-u/pc-web.git
    

    相同留意,长途库的称号叫gitee,不叫origin。

    1. 检查长途库信息
    git remote -v
    gitee   git@gitee.com:hey-u/pc-web.git (fetch)
    gitee   git@gitee.com:hey-u/pc-web.git (push)
    github  git@github.com:all-smile/pc-web.git (fetch)
    github  git@github.com:all-smile/pc-web.git (push)
    
    1. 本地修正推送到远端
    • 推送到GitHub
    git push github master
    
    • 推送到Gitee
    git push gitee master
    

    也能够在运用NPM包管理东西的项目增加如下scripts脚本

    "scripts": {
        "pull": "git pull github master && git pull gitee master",
        "push": "git push github master && git push gitee master"
    },
    

    拉取/推送的时分运用

    npm run pull
    npm run push
    

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    官网文档: git-scm.com/doc

    (更多…)
    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有
    1. 吊销本地分支与长途分支的联系

    git branch --unset-upstream

    1. 兼并分支
    git  checkout master    # 切换到master分支上
    git pull origin master  # 把长途分支pull下去,及时更新
    git  merge dev          # 把dev分支的代码兼并到master上
    git status              # 检查状况
    git push origin master  # push到长途分支
    

    本地库房一起相关多个远端库房(gitee, github, gitlab…)

    因为Git自身是分布式版别控制体系,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。

    运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin,假如有多个长途库,咱们需求用不同的称号来标识不同的长途库, 详细操作过程如下:

    1. 先删去已相关的名为origin的长途库:
    git remote rm origin
    
    1. 再相关GitHub的长途库:
    git remote add github git@github.com:all-smile/pc-web.git
    

    留意: 长途库的称号叫github,不叫origin了。

    1. 接着,再相关Gitee的长途库:
    git remote add gitee git@gitee.com:hey-u/pc-web.git
    

    相同留意,长途库的称号叫gitee,不叫origin。

    1. 检查长途库信息
    git remote -v
    gitee   git@gitee.com:hey-u/pc-web.git (fetch)
    gitee   git@gitee.com:hey-u/pc-web.git (push)
    github  git@github.com:all-smile/pc-web.git (fetch)
    github  git@github.com:all-smile/pc-web.git (push)
    
    1. 本地修正推送到远端
    • 推送到GitHub
    git push github master
    
    • 推送到Gitee
    git push gitee master
    

    也能够在运用NPM包管理东西的项目增加如下scripts脚本

    "scripts": {
        "pull": "git pull github master && git pull gitee master",
        "push": "git push github master && git push gitee master"
    },
    

    拉取/推送的时分运用

    npm run pull
    npm run push
    

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    官网文档: git-scm.com/doc

    (更多…)
    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有
    1. 吊销本地分支与长途分支的联系

    git branch --unset-upstream

    1. 兼并分支
    git  checkout master    # 切换到master分支上
    git pull origin master  # 把长途分支pull下去,及时更新
    git  merge dev          # 把dev分支的代码兼并到master上
    git status              # 检查状况
    git push origin master  # push到长途分支
    

    本地库房一起相关多个远端库房(gitee, github, gitlab…)

    因为Git自身是分布式版别控制体系,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。

    运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin,假如有多个长途库,咱们需求用不同的称号来标识不同的长途库, 详细操作过程如下:

    1. 先删去已相关的名为origin的长途库:
    git remote rm origin
    
    1. 再相关GitHub的长途库:
    git remote add github git@github.com:all-smile/pc-web.git
    

    留意: 长途库的称号叫github,不叫origin了。

    1. 接着,再相关Gitee的长途库:
    git remote add gitee git@gitee.com:hey-u/pc-web.git
    

    相同留意,长途库的称号叫gitee,不叫origin。

    1. 检查长途库信息
    git remote -v
    gitee   git@gitee.com:hey-u/pc-web.git (fetch)
    gitee   git@gitee.com:hey-u/pc-web.git (push)
    github  git@github.com:all-smile/pc-web.git (fetch)
    github  git@github.com:all-smile/pc-web.git (push)
    
    1. 本地修正推送到远端
    • 推送到GitHub
    git push github master
    
    • 推送到Gitee
    git push gitee master
    

    也能够在运用NPM包管理东西的项目增加如下scripts脚本

    "scripts": {
        "pull": "git pull github master && git pull gitee master",
        "push": "git push github master && git push gitee master"
    },
    

    拉取/推送的时分运用

    npm run pull
    npm run push
    

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    官网文档: git-scm.com/doc

    (更多…)
    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有
    1. 吊销本地分支与长途分支的联系

    git branch --unset-upstream

    1. 兼并分支
    git  checkout master    # 切换到master分支上
    git pull origin master  # 把长途分支pull下去,及时更新
    git  merge dev          # 把dev分支的代码兼并到master上
    git status              # 检查状况
    git push origin master  # push到长途分支
    

    本地库房一起相关多个远端库房(gitee, github, gitlab…)

    因为Git自身是分布式版别控制体系,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。

    运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin,假如有多个长途库,咱们需求用不同的称号来标识不同的长途库, 详细操作过程如下:

    1. 先删去已相关的名为origin的长途库:
    git remote rm origin
    
    1. 再相关GitHub的长途库:
    git remote add github git@github.com:all-smile/pc-web.git
    

    留意: 长途库的称号叫github,不叫origin了。

    1. 接着,再相关Gitee的长途库:
    git remote add gitee git@gitee.com:hey-u/pc-web.git
    

    相同留意,长途库的称号叫gitee,不叫origin。

    1. 检查长途库信息
    git remote -v
    gitee   git@gitee.com:hey-u/pc-web.git (fetch)
    gitee   git@gitee.com:hey-u/pc-web.git (push)
    github  git@github.com:all-smile/pc-web.git (fetch)
    github  git@github.com:all-smile/pc-web.git (push)
    
    1. 本地修正推送到远端
    • 推送到GitHub
    git push github master
    
    • 推送到Gitee
    git push gitee master
    

    也能够在运用NPM包管理东西的项目增加如下scripts脚本

    "scripts": {
        "pull": "git pull github master && git pull gitee master",
        "push": "git push github master && git push gitee master"
    },
    

    拉取/推送的时分运用

    npm run pull
    npm run push
    

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    官网文档: git-scm.com/doc

    (更多…)
    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有
    1. 吊销本地分支与长途分支的联系

    git branch --unset-upstream

    1. 兼并分支
    git  checkout master    # 切换到master分支上
    git pull origin master  # 把长途分支pull下去,及时更新
    git  merge dev          # 把dev分支的代码兼并到master上
    git status              # 检查状况
    git push origin master  # push到长途分支
    

    本地库房一起相关多个远端库房(gitee, github, gitlab…)

    因为Git自身是分布式版别控制体系,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。

    运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin,假如有多个长途库,咱们需求用不同的称号来标识不同的长途库, 详细操作过程如下:

    1. 先删去已相关的名为origin的长途库:
    git remote rm origin
    
    1. 再相关GitHub的长途库:
    git remote add github git@github.com:all-smile/pc-web.git
    

    留意: 长途库的称号叫github,不叫origin了。

    1. 接着,再相关Gitee的长途库:
    git remote add gitee git@gitee.com:hey-u/pc-web.git
    

    相同留意,长途库的称号叫gitee,不叫origin。

    1. 检查长途库信息
    git remote -v
    gitee   git@gitee.com:hey-u/pc-web.git (fetch)
    gitee   git@gitee.com:hey-u/pc-web.git (push)
    github  git@github.com:all-smile/pc-web.git (fetch)
    github  git@github.com:all-smile/pc-web.git (push)
    
    1. 本地修正推送到远端
    • 推送到GitHub
    git push github master
    
    • 推送到Gitee
    git push gitee master
    

    也能够在运用NPM包管理东西的项目增加如下scripts脚本

    "scripts": {
        "pull": "git pull github master && git pull gitee master",
        "push": "git push github master && git push gitee master"
    },
    

    拉取/推送的时分运用

    npm run pull
    npm run push
    

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    官网文档: git-scm.com/doc

    (更多…)
    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有
    1. 吊销本地分支与长途分支的联系

    git branch --unset-upstream

    1. 兼并分支
    git  checkout master    # 切换到master分支上
    git pull origin master  # 把长途分支pull下去,及时更新
    git  merge dev          # 把dev分支的代码兼并到master上
    git status              # 检查状况
    git push origin master  # push到长途分支
    

    本地库房一起相关多个远端库房(gitee, github, gitlab…)

    因为Git自身是分布式版别控制体系,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。

    运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin,假如有多个长途库,咱们需求用不同的称号来标识不同的长途库, 详细操作过程如下:

    1. 先删去已相关的名为origin的长途库:
    git remote rm origin
    
    1. 再相关GitHub的长途库:
    git remote add github git@github.com:all-smile/pc-web.git
    

    留意: 长途库的称号叫github,不叫origin了。

    1. 接着,再相关Gitee的长途库:
    git remote add gitee git@gitee.com:hey-u/pc-web.git
    

    相同留意,长途库的称号叫gitee,不叫origin。

    1. 检查长途库信息
    git remote -v
    gitee   git@gitee.com:hey-u/pc-web.git (fetch)
    gitee   git@gitee.com:hey-u/pc-web.git (push)
    github  git@github.com:all-smile/pc-web.git (fetch)
    github  git@github.com:all-smile/pc-web.git (push)
    
    1. 本地修正推送到远端
    • 推送到GitHub
    git push github master
    
    • 推送到Gitee
    git push gitee master
    

    也能够在运用NPM包管理东西的项目增加如下scripts脚本

    "scripts": {
        "pull": "git pull github master && git pull gitee master",
        "push": "git push github master && git push gitee master"
    },
    

    拉取/推送的时分运用

    npm run pull
    npm run push
    

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    官网文档: git-scm.com/doc

    (更多…)
    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有
    1. 吊销本地分支与长途分支的联系

    git branch --unset-upstream

    1. 兼并分支
    git  checkout master    # 切换到master分支上
    git pull origin master  # 把长途分支pull下去,及时更新
    git  merge dev          # 把dev分支的代码兼并到master上
    git status              # 检查状况
    git push origin master  # push到长途分支
    

    本地库房一起相关多个远端库房(gitee, github, gitlab…)

    因为Git自身是分布式版别控制体系,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。

    运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin,假如有多个长途库,咱们需求用不同的称号来标识不同的长途库, 详细操作过程如下:

    1. 先删去已相关的名为origin的长途库:
    git remote rm origin
    
    1. 再相关GitHub的长途库:
    git remote add github git@github.com:all-smile/pc-web.git
    

    留意: 长途库的称号叫github,不叫origin了。

    1. 接着,再相关Gitee的长途库:
    git remote add gitee git@gitee.com:hey-u/pc-web.git
    

    相同留意,长途库的称号叫gitee,不叫origin。

    1. 检查长途库信息
    git remote -v
    gitee   git@gitee.com:hey-u/pc-web.git (fetch)
    gitee   git@gitee.com:hey-u/pc-web.git (push)
    github  git@github.com:all-smile/pc-web.git (fetch)
    github  git@github.com:all-smile/pc-web.git (push)
    
    1. 本地修正推送到远端
    • 推送到GitHub
    git push github master
    
    • 推送到Gitee
    git push gitee master
    

    也能够在运用NPM包管理东西的项目增加如下scripts脚本

    "scripts": {
        "pull": "git pull github master && git pull gitee master",
        "push": "git push github master && git push gitee master"
    },
    

    拉取/推送的时分运用

    npm run pull
    npm run push
    

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    官网文档: git-scm.com/doc

    (更多…)
    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有
    1. 吊销本地分支与长途分支的联系

    git branch --unset-upstream

    1. 兼并分支
    git  checkout master    # 切换到master分支上
    git pull origin master  # 把长途分支pull下去,及时更新
    git  merge dev          # 把dev分支的代码兼并到master上
    git status              # 检查状况
    git push origin master  # push到长途分支
    

    本地库房一起相关多个远端库房(gitee, github, gitlab…)

    因为Git自身是分布式版别控制体系,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。

    运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin,假如有多个长途库,咱们需求用不同的称号来标识不同的长途库, 详细操作过程如下:

    1. 先删去已相关的名为origin的长途库:
    git remote rm origin
    
    1. 再相关GitHub的长途库:
    git remote add github git@github.com:all-smile/pc-web.git
    

    留意: 长途库的称号叫github,不叫origin了。

    1. 接着,再相关Gitee的长途库:
    git remote add gitee git@gitee.com:hey-u/pc-web.git
    

    相同留意,长途库的称号叫gitee,不叫origin。

    1. 检查长途库信息
    git remote -v
    gitee   git@gitee.com:hey-u/pc-web.git (fetch)
    gitee   git@gitee.com:hey-u/pc-web.git (push)
    github  git@github.com:all-smile/pc-web.git (fetch)
    github  git@github.com:all-smile/pc-web.git (push)
    
    1. 本地修正推送到远端
    • 推送到GitHub
    git push github master
    
    • 推送到Gitee
    git push gitee master
    

    也能够在运用NPM包管理东西的项目增加如下scripts脚本

    "scripts": {
        "pull": "git pull github master && git pull gitee master",
        "push": "git push github master && git push gitee master"
    },
    

    拉取/推送的时分运用

    npm run pull
    npm run push
    

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    官网文档: git-scm.com/doc

    (更多…)
    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有
    1. 吊销本地分支与长途分支的联系

    git branch --unset-upstream

    1. 兼并分支
    git  checkout master    # 切换到master分支上
    git pull origin master  # 把长途分支pull下去,及时更新
    git  merge dev          # 把dev分支的代码兼并到master上
    git status              # 检查状况
    git push origin master  # push到长途分支
    

    本地库房一起相关多个远端库房(gitee, github, gitlab…)

    因为Git自身是分布式版别控制体系,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。

    运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin,假如有多个长途库,咱们需求用不同的称号来标识不同的长途库, 详细操作过程如下:

    1. 先删去已相关的名为origin的长途库:
    git remote rm origin
    
    1. 再相关GitHub的长途库:
    git remote add github git@github.com:all-smile/pc-web.git
    

    留意: 长途库的称号叫github,不叫origin了。

    1. 接着,再相关Gitee的长途库:
    git remote add gitee git@gitee.com:hey-u/pc-web.git
    

    相同留意,长途库的称号叫gitee,不叫origin。

    1. 检查长途库信息
    git remote -v
    gitee   git@gitee.com:hey-u/pc-web.git (fetch)
    gitee   git@gitee.com:hey-u/pc-web.git (push)
    github  git@github.com:all-smile/pc-web.git (fetch)
    github  git@github.com:all-smile/pc-web.git (push)
    
    1. 本地修正推送到远端
    • 推送到GitHub
    git push github master
    
    • 推送到Gitee
    git push gitee master
    

    也能够在运用NPM包管理东西的项目增加如下scripts脚本

    "scripts": {
        "pull": "git pull github master && git pull gitee master",
        "push": "git push github master && git push gitee master"
    },
    

    拉取/推送的时分运用

    npm run pull
    npm run push
    

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    官网文档: git-scm.com/doc

    (更多…)
    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有
    1. 吊销本地分支与长途分支的联系

    git branch --unset-upstream

    1. 兼并分支
    git  checkout master    # 切换到master分支上
    git pull origin master  # 把长途分支pull下去,及时更新
    git  merge dev          # 把dev分支的代码兼并到master上
    git status              # 检查状况
    git push origin master  # push到长途分支
    

    本地库房一起相关多个远端库房(gitee, github, gitlab…)

    因为Git自身是分布式版别控制体系,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。

    运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin,假如有多个长途库,咱们需求用不同的称号来标识不同的长途库, 详细操作过程如下:

    1. 先删去已相关的名为origin的长途库:
    git remote rm origin
    
    1. 再相关GitHub的长途库:
    git remote add github git@github.com:all-smile/pc-web.git
    

    留意: 长途库的称号叫github,不叫origin了。

    1. 接着,再相关Gitee的长途库:
    git remote add gitee git@gitee.com:hey-u/pc-web.git
    

    相同留意,长途库的称号叫gitee,不叫origin。

    1. 检查长途库信息
    git remote -v
    gitee   git@gitee.com:hey-u/pc-web.git (fetch)
    gitee   git@gitee.com:hey-u/pc-web.git (push)
    github  git@github.com:all-smile/pc-web.git (fetch)
    github  git@github.com:all-smile/pc-web.git (push)
    
    1. 本地修正推送到远端
    • 推送到GitHub
    git push github master
    
    • 推送到Gitee
    git push gitee master
    

    也能够在运用NPM包管理东西的项目增加如下scripts脚本

    "scripts": {
        "pull": "git pull github master && git pull gitee master",
        "push": "git push github master && git push gitee master"
    },
    

    拉取/推送的时分运用

    npm run pull
    npm run push
    

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    官网文档: git-scm.com/doc

    (更多…)
    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有
    1. 吊销本地分支与长途分支的联系

    git branch --unset-upstream

    1. 兼并分支
    git  checkout master    # 切换到master分支上
    git pull origin master  # 把长途分支pull下去,及时更新
    git  merge dev          # 把dev分支的代码兼并到master上
    git status              # 检查状况
    git push origin master  # push到长途分支
    

    本地库房一起相关多个远端库房(gitee, github, gitlab…)

    因为Git自身是分布式版别控制体系,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。

    运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin,假如有多个长途库,咱们需求用不同的称号来标识不同的长途库, 详细操作过程如下:

    1. 先删去已相关的名为origin的长途库:
    git remote rm origin
    
    1. 再相关GitHub的长途库:
    git remote add github git@github.com:all-smile/pc-web.git
    

    留意: 长途库的称号叫github,不叫origin了。

    1. 接着,再相关Gitee的长途库:
    git remote add gitee git@gitee.com:hey-u/pc-web.git
    

    相同留意,长途库的称号叫gitee,不叫origin。

    1. 检查长途库信息
    git remote -v
    gitee   git@gitee.com:hey-u/pc-web.git (fetch)
    gitee   git@gitee.com:hey-u/pc-web.git (push)
    github  git@github.com:all-smile/pc-web.git (fetch)
    github  git@github.com:all-smile/pc-web.git (push)
    
    1. 本地修正推送到远端
    • 推送到GitHub
    git push github master
    
    • 推送到Gitee
    git push gitee master
    

    也能够在运用NPM包管理东西的项目增加如下scripts脚本

    "scripts": {
        "pull": "git pull github master && git pull gitee master",
        "push": "git push github master && git push gitee master"
    },
    

    拉取/推送的时分运用

    npm run pull
    npm run push
    

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    官网文档: git-scm.com/doc

    (更多…)
    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有
    1. 吊销本地分支与长途分支的联系

    git branch --unset-upstream

    1. 兼并分支
    git  checkout master    # 切换到master分支上
    git pull origin master  # 把长途分支pull下去,及时更新
    git  merge dev          # 把dev分支的代码兼并到master上
    git status              # 检查状况
    git push origin master  # push到长途分支
    

    本地库房一起相关多个远端库房(gitee, github, gitlab…)

    因为Git自身是分布式版别控制体系,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。

    运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin,假如有多个长途库,咱们需求用不同的称号来标识不同的长途库, 详细操作过程如下:

    1. 先删去已相关的名为origin的长途库:
    git remote rm origin
    
    1. 再相关GitHub的长途库:
    git remote add github git@github.com:all-smile/pc-web.git
    

    留意: 长途库的称号叫github,不叫origin了。

    1. 接着,再相关Gitee的长途库:
    git remote add gitee git@gitee.com:hey-u/pc-web.git
    

    相同留意,长途库的称号叫gitee,不叫origin。

    1. 检查长途库信息
    git remote -v
    gitee   git@gitee.com:hey-u/pc-web.git (fetch)
    gitee   git@gitee.com:hey-u/pc-web.git (push)
    github  git@github.com:all-smile/pc-web.git (fetch)
    github  git@github.com:all-smile/pc-web.git (push)
    
    1. 本地修正推送到远端
    • 推送到GitHub
    git push github master
    
    • 推送到Gitee
    git push gitee master
    

    也能够在运用NPM包管理东西的项目增加如下scripts脚本

    "scripts": {
        "pull": "git pull github master && git pull gitee master",
        "push": "git push github master && git push gitee master"
    },
    

    拉取/推送的时分运用

    npm run pull
    npm run push
    

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    官网文档: git-scm.com/doc

    (更多…)
    git相关问题解析,你想要的都有
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有
    1. 吊销本地分支与长途分支的联系

    git branch --unset-upstream

    1. 兼并分支
    git  checkout master    # 切换到master分支上
    git pull origin master  # 把长途分支pull下去,及时更新
    git  merge dev          # 把dev分支的代码兼并到master上
    git status              # 检查状况
    git push origin master  # push到长途分支
    

    本地库房一起相关多个远端库房(gitee, github, gitlab…)

    因为Git自身是分布式版别控制体系,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。

    运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin,假如有多个长途库,咱们需求用不同的称号来标识不同的长途库, 详细操作过程如下:

    1. 先删去已相关的名为origin的长途库:
    git remote rm origin
    
    1. 再相关GitHub的长途库:
    git remote add github git@github.com:all-smile/pc-web.git
    

    留意: 长途库的称号叫github,不叫origin了。

    1. 接着,再相关Gitee的长途库:
    git remote add gitee git@gitee.com:hey-u/pc-web.git
    

    相同留意,长途库的称号叫gitee,不叫origin。

    1. 检查长途库信息
    git remote -v
    gitee   git@gitee.com:hey-u/pc-web.git (fetch)
    gitee   git@gitee.com:hey-u/pc-web.git (push)
    github  git@github.com:all-smile/pc-web.git (fetch)
    github  git@github.com:all-smile/pc-web.git (push)
    
    1. 本地修正推送到远端
    • 推送到GitHub
    git push github master
    
    • 推送到Gitee
    git push gitee master
    

    也能够在运用NPM包管理东西的项目增加如下scripts脚本

    "scripts": {
        "pull": "git pull github master && git pull gitee master",
        "push": "git push github master && git push gitee master"
    },
    

    拉取/推送的时分运用

    npm run pull
    npm run push
    

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    官网文档: git-scm.com/doc

    (更多…)
    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有
    1. 吊销本地分支与长途分支的联系

    git branch --unset-upstream

    1. 兼并分支
    git  checkout master    # 切换到master分支上
    git pull origin master  # 把长途分支pull下去,及时更新
    git  merge dev          # 把dev分支的代码兼并到master上
    git status              # 检查状况
    git push origin master  # push到长途分支
    

    本地库房一起相关多个远端库房(gitee, github, gitlab…)

    因为Git自身是分布式版别控制体系,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。

    运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin,假如有多个长途库,咱们需求用不同的称号来标识不同的长途库, 详细操作过程如下:

    1. 先删去已相关的名为origin的长途库:
    git remote rm origin
    
    1. 再相关GitHub的长途库:
    git remote add github git@github.com:all-smile/pc-web.git
    

    留意: 长途库的称号叫github,不叫origin了。

    1. 接着,再相关Gitee的长途库:
    git remote add gitee git@gitee.com:hey-u/pc-web.git
    

    相同留意,长途库的称号叫gitee,不叫origin。

    1. 检查长途库信息
    git remote -v
    gitee   git@gitee.com:hey-u/pc-web.git (fetch)
    gitee   git@gitee.com:hey-u/pc-web.git (push)
    github  git@github.com:all-smile/pc-web.git (fetch)
    github  git@github.com:all-smile/pc-web.git (push)
    
    1. 本地修正推送到远端
    • 推送到GitHub
    git push github master
    
    • 推送到Gitee
    git push gitee master
    

    也能够在运用NPM包管理东西的项目增加如下scripts脚本

    "scripts": {
        "pull": "git pull github master && git pull gitee master",
        "push": "git push github master && git push gitee master"
    },
    

    拉取/推送的时分运用

    npm run pull
    npm run push
    

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    官网文档: git-scm.com/doc

    (更多…)
    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有
    1. 吊销本地分支与长途分支的联系

    git branch --unset-upstream

    1. 兼并分支
    git  checkout master    # 切换到master分支上
    git pull origin master  # 把长途分支pull下去,及时更新
    git  merge dev          # 把dev分支的代码兼并到master上
    git status              # 检查状况
    git push origin master  # push到长途分支
    

    本地库房一起相关多个远端库房(gitee, github, gitlab…)

    因为Git自身是分布式版别控制体系,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。

    运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin,假如有多个长途库,咱们需求用不同的称号来标识不同的长途库, 详细操作过程如下:

    1. 先删去已相关的名为origin的长途库:
    git remote rm origin
    
    1. 再相关GitHub的长途库:
    git remote add github git@github.com:all-smile/pc-web.git
    

    留意: 长途库的称号叫github,不叫origin了。

    1. 接着,再相关Gitee的长途库:
    git remote add gitee git@gitee.com:hey-u/pc-web.git
    

    相同留意,长途库的称号叫gitee,不叫origin。

    1. 检查长途库信息
    git remote -v
    gitee   git@gitee.com:hey-u/pc-web.git (fetch)
    gitee   git@gitee.com:hey-u/pc-web.git (push)
    github  git@github.com:all-smile/pc-web.git (fetch)
    github  git@github.com:all-smile/pc-web.git (push)
    
    1. 本地修正推送到远端
    • 推送到GitHub
    git push github master
    
    • 推送到Gitee
    git push gitee master
    

    也能够在运用NPM包管理东西的项目增加如下scripts脚本

    "scripts": {
        "pull": "git pull github master && git pull gitee master",
        "push": "git push github master && git push gitee master"
    },
    

    拉取/推送的时分运用

    npm run pull
    npm run push
    

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    官网文档: git-scm.com/doc

    (更多…)
    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有
    1. 吊销本地分支与长途分支的联系

    git branch --unset-upstream

    1. 兼并分支
    git  checkout master    # 切换到master分支上
    git pull origin master  # 把长途分支pull下去,及时更新
    git  merge dev          # 把dev分支的代码兼并到master上
    git status              # 检查状况
    git push origin master  # push到长途分支
    

    本地库房一起相关多个远端库房(gitee, github, gitlab…)

    因为Git自身是分布式版别控制体系,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。

    运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin,假如有多个长途库,咱们需求用不同的称号来标识不同的长途库, 详细操作过程如下:

    1. 先删去已相关的名为origin的长途库:
    git remote rm origin
    
    1. 再相关GitHub的长途库:
    git remote add github git@github.com:all-smile/pc-web.git
    

    留意: 长途库的称号叫github,不叫origin了。

    1. 接着,再相关Gitee的长途库:
    git remote add gitee git@gitee.com:hey-u/pc-web.git
    

    相同留意,长途库的称号叫gitee,不叫origin。

    1. 检查长途库信息
    git remote -v
    gitee   git@gitee.com:hey-u/pc-web.git (fetch)
    gitee   git@gitee.com:hey-u/pc-web.git (push)
    github  git@github.com:all-smile/pc-web.git (fetch)
    github  git@github.com:all-smile/pc-web.git (push)
    
    1. 本地修正推送到远端
    • 推送到GitHub
    git push github master
    
    • 推送到Gitee
    git push gitee master
    

    也能够在运用NPM包管理东西的项目增加如下scripts脚本

    "scripts": {
        "pull": "git pull github master && git pull gitee master",
        "push": "git push github master && git push gitee master"
    },
    

    拉取/推送的时分运用

    npm run pull
    npm run push
    

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    官网文档: git-scm.com/doc

    (更多…)
    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有
    1. 吊销本地分支与长途分支的联系

    git branch --unset-upstream

    1. 兼并分支
    git  checkout master    # 切换到master分支上
    git pull origin master  # 把长途分支pull下去,及时更新
    git  merge dev          # 把dev分支的代码兼并到master上
    git status              # 检查状况
    git push origin master  # push到长途分支
    

    本地库房一起相关多个远端库房(gitee, github, gitlab…)

    因为Git自身是分布式版别控制体系,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。

    运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin,假如有多个长途库,咱们需求用不同的称号来标识不同的长途库, 详细操作过程如下:

    1. 先删去已相关的名为origin的长途库:
    git remote rm origin
    
    1. 再相关GitHub的长途库:
    git remote add github git@github.com:all-smile/pc-web.git
    

    留意: 长途库的称号叫github,不叫origin了。

    1. 接着,再相关Gitee的长途库:
    git remote add gitee git@gitee.com:hey-u/pc-web.git
    

    相同留意,长途库的称号叫gitee,不叫origin。

    1. 检查长途库信息
    git remote -v
    gitee   git@gitee.com:hey-u/pc-web.git (fetch)
    gitee   git@gitee.com:hey-u/pc-web.git (push)
    github  git@github.com:all-smile/pc-web.git (fetch)
    github  git@github.com:all-smile/pc-web.git (push)
    
    1. 本地修正推送到远端
    • 推送到GitHub
    git push github master
    
    • 推送到Gitee
    git push gitee master
    

    也能够在运用NPM包管理东西的项目增加如下scripts脚本

    "scripts": {
        "pull": "git pull github master && git pull gitee master",
        "push": "git push github master && git push gitee master"
    },
    

    拉取/推送的时分运用

    npm run pull
    npm run push
    

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    官网文档: git-scm.com/doc

    (更多…)
    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有
    1. 吊销本地分支与长途分支的联系

    git branch --unset-upstream

    1. 兼并分支
    git  checkout master    # 切换到master分支上
    git pull origin master  # 把长途分支pull下去,及时更新
    git  merge dev          # 把dev分支的代码兼并到master上
    git status              # 检查状况
    git push origin master  # push到长途分支
    

    本地库房一起相关多个远端库房(gitee, github, gitlab…)

    因为Git自身是分布式版别控制体系,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。

    运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin,假如有多个长途库,咱们需求用不同的称号来标识不同的长途库, 详细操作过程如下:

    1. 先删去已相关的名为origin的长途库:
    git remote rm origin
    
    1. 再相关GitHub的长途库:
    git remote add github git@github.com:all-smile/pc-web.git
    

    留意: 长途库的称号叫github,不叫origin了。

    1. 接着,再相关Gitee的长途库:
    git remote add gitee git@gitee.com:hey-u/pc-web.git
    

    相同留意,长途库的称号叫gitee,不叫origin。

    1. 检查长途库信息
    git remote -v
    gitee   git@gitee.com:hey-u/pc-web.git (fetch)
    gitee   git@gitee.com:hey-u/pc-web.git (push)
    github  git@github.com:all-smile/pc-web.git (fetch)
    github  git@github.com:all-smile/pc-web.git (push)
    
    1. 本地修正推送到远端
    • 推送到GitHub
    git push github master
    
    • 推送到Gitee
    git push gitee master
    

    也能够在运用NPM包管理东西的项目增加如下scripts脚本

    "scripts": {
        "pull": "git pull github master && git pull gitee master",
        "push": "git push github master && git push gitee master"
    },
    

    拉取/推送的时分运用

    npm run pull
    npm run push
    

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    官网文档: git-scm.com/doc

    (更多…)
    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有
    1. 吊销本地分支与长途分支的联系

    git branch --unset-upstream

    1. 兼并分支
    git  checkout master    # 切换到master分支上
    git pull origin master  # 把长途分支pull下去,及时更新
    git  merge dev          # 把dev分支的代码兼并到master上
    git status              # 检查状况
    git push origin master  # push到长途分支
    

    本地库房一起相关多个远端库房(gitee, github, gitlab…)

    因为Git自身是分布式版别控制体系,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。

    运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin,假如有多个长途库,咱们需求用不同的称号来标识不同的长途库, 详细操作过程如下:

    1. 先删去已相关的名为origin的长途库:
    git remote rm origin
    
    1. 再相关GitHub的长途库:
    git remote add github git@github.com:all-smile/pc-web.git
    

    留意: 长途库的称号叫github,不叫origin了。

    1. 接着,再相关Gitee的长途库:
    git remote add gitee git@gitee.com:hey-u/pc-web.git
    

    相同留意,长途库的称号叫gitee,不叫origin。

    1. 检查长途库信息
    git remote -v
    gitee   git@gitee.com:hey-u/pc-web.git (fetch)
    gitee   git@gitee.com:hey-u/pc-web.git (push)
    github  git@github.com:all-smile/pc-web.git (fetch)
    github  git@github.com:all-smile/pc-web.git (push)
    
    1. 本地修正推送到远端
    • 推送到GitHub
    git push github master
    
    • 推送到Gitee
    git push gitee master
    

    也能够在运用NPM包管理东西的项目增加如下scripts脚本

    "scripts": {
        "pull": "git pull github master && git pull gitee master",
        "push": "git push github master && git push gitee master"
    },
    

    拉取/推送的时分运用

    npm run pull
    npm run push
    

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    官网文档: git-scm.com/doc

    (更多…)
    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有
    1. 吊销本地分支与长途分支的联系

    git branch --unset-upstream

    1. 兼并分支
    git  checkout master    # 切换到master分支上
    git pull origin master  # 把长途分支pull下去,及时更新
    git  merge dev          # 把dev分支的代码兼并到master上
    git status              # 检查状况
    git push origin master  # push到长途分支
    

    本地库房一起相关多个远端库房(gitee, github, gitlab…)

    因为Git自身是分布式版别控制体系,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。

    运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin,假如有多个长途库,咱们需求用不同的称号来标识不同的长途库, 详细操作过程如下:

    1. 先删去已相关的名为origin的长途库:
    git remote rm origin
    
    1. 再相关GitHub的长途库:
    git remote add github git@github.com:all-smile/pc-web.git
    

    留意: 长途库的称号叫github,不叫origin了。

    1. 接着,再相关Gitee的长途库:
    git remote add gitee git@gitee.com:hey-u/pc-web.git
    

    相同留意,长途库的称号叫gitee,不叫origin。

    1. 检查长途库信息
    git remote -v
    gitee   git@gitee.com:hey-u/pc-web.git (fetch)
    gitee   git@gitee.com:hey-u/pc-web.git (push)
    github  git@github.com:all-smile/pc-web.git (fetch)
    github  git@github.com:all-smile/pc-web.git (push)
    
    1. 本地修正推送到远端
    • 推送到GitHub
    git push github master
    
    • 推送到Gitee
    git push gitee master
    

    也能够在运用NPM包管理东西的项目增加如下scripts脚本

    "scripts": {
        "pull": "git pull github master && git pull gitee master",
        "push": "git push github master && git push gitee master"
    },
    

    拉取/推送的时分运用

    npm run pull
    npm run push
    

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    官网文档: git-scm.com/doc

    (更多…)
    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有
    1. 吊销本地分支与长途分支的联系

    git branch --unset-upstream

    1. 兼并分支
    git  checkout master    # 切换到master分支上
    git pull origin master  # 把长途分支pull下去,及时更新
    git  merge dev          # 把dev分支的代码兼并到master上
    git status              # 检查状况
    git push origin master  # push到长途分支
    

    本地库房一起相关多个远端库房(gitee, github, gitlab…)

    因为Git自身是分布式版别控制体系,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。

    运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin,假如有多个长途库,咱们需求用不同的称号来标识不同的长途库, 详细操作过程如下:

    1. 先删去已相关的名为origin的长途库:
    git remote rm origin
    
    1. 再相关GitHub的长途库:
    git remote add github git@github.com:all-smile/pc-web.git
    

    留意: 长途库的称号叫github,不叫origin了。

    1. 接着,再相关Gitee的长途库:
    git remote add gitee git@gitee.com:hey-u/pc-web.git
    

    相同留意,长途库的称号叫gitee,不叫origin。

    1. 检查长途库信息
    git remote -v
    gitee   git@gitee.com:hey-u/pc-web.git (fetch)
    gitee   git@gitee.com:hey-u/pc-web.git (push)
    github  git@github.com:all-smile/pc-web.git (fetch)
    github  git@github.com:all-smile/pc-web.git (push)
    
    1. 本地修正推送到远端
    • 推送到GitHub
    git push github master
    
    • 推送到Gitee
    git push gitee master
    

    也能够在运用NPM包管理东西的项目增加如下scripts脚本

    "scripts": {
        "pull": "git pull github master && git pull gitee master",
        "push": "git push github master && git push gitee master"
    },
    

    拉取/推送的时分运用

    npm run pull
    npm run push
    

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    官网文档: git-scm.com/doc

    (更多…)
    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有
    1. 吊销本地分支与长途分支的联系

    git branch --unset-upstream

    1. 兼并分支
    git  checkout master    # 切换到master分支上
    git pull origin master  # 把长途分支pull下去,及时更新
    git  merge dev          # 把dev分支的代码兼并到master上
    git status              # 检查状况
    git push origin master  # push到长途分支
    

    本地库房一起相关多个远端库房(gitee, github, gitlab…)

    因为Git自身是分布式版别控制体系,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。

    运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin,假如有多个长途库,咱们需求用不同的称号来标识不同的长途库, 详细操作过程如下:

    1. 先删去已相关的名为origin的长途库:
    git remote rm origin
    
    1. 再相关GitHub的长途库:
    git remote add github git@github.com:all-smile/pc-web.git
    

    留意: 长途库的称号叫github,不叫origin了。

    1. 接着,再相关Gitee的长途库:
    git remote add gitee git@gitee.com:hey-u/pc-web.git
    

    相同留意,长途库的称号叫gitee,不叫origin。

    1. 检查长途库信息
    git remote -v
    gitee   git@gitee.com:hey-u/pc-web.git (fetch)
    gitee   git@gitee.com:hey-u/pc-web.git (push)
    github  git@github.com:all-smile/pc-web.git (fetch)
    github  git@github.com:all-smile/pc-web.git (push)
    
    1. 本地修正推送到远端
    • 推送到GitHub
    git push github master
    
    • 推送到Gitee
    git push gitee master
    

    也能够在运用NPM包管理东西的项目增加如下scripts脚本

    "scripts": {
        "pull": "git pull github master && git pull gitee master",
        "push": "git push github master && git push gitee master"
    },
    

    拉取/推送的时分运用

    npm run pull
    npm run push
    

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    官网文档: git-scm.com/doc

    (更多…)
    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有
    1. 吊销本地分支与长途分支的联系

    git branch --unset-upstream

    1. 兼并分支
    git  checkout master    # 切换到master分支上
    git pull origin master  # 把长途分支pull下去,及时更新
    git  merge dev          # 把dev分支的代码兼并到master上
    git status              # 检查状况
    git push origin master  # push到长途分支
    

    本地库房一起相关多个远端库房(gitee, github, gitlab…)

    因为Git自身是分布式版别控制体系,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。

    运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin,假如有多个长途库,咱们需求用不同的称号来标识不同的长途库, 详细操作过程如下:

    1. 先删去已相关的名为origin的长途库:
    git remote rm origin
    
    1. 再相关GitHub的长途库:
    git remote add github git@github.com:all-smile/pc-web.git
    

    留意: 长途库的称号叫github,不叫origin了。

    1. 接着,再相关Gitee的长途库:
    git remote add gitee git@gitee.com:hey-u/pc-web.git
    

    相同留意,长途库的称号叫gitee,不叫origin。

    1. 检查长途库信息
    git remote -v
    gitee   git@gitee.com:hey-u/pc-web.git (fetch)
    gitee   git@gitee.com:hey-u/pc-web.git (push)
    github  git@github.com:all-smile/pc-web.git (fetch)
    github  git@github.com:all-smile/pc-web.git (push)
    
    1. 本地修正推送到远端
    • 推送到GitHub
    git push github master
    
    • 推送到Gitee
    git push gitee master
    

    也能够在运用NPM包管理东西的项目增加如下scripts脚本

    "scripts": {
        "pull": "git pull github master && git pull gitee master",
        "push": "git push github master && git push gitee master"
    },
    

    拉取/推送的时分运用

    npm run pull
    npm run push
    

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    官网文档: git-scm.com/doc

    (更多…)
    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有
    1. 吊销本地分支与长途分支的联系

    git branch --unset-upstream

    1. 兼并分支
    git  checkout master    # 切换到master分支上
    git pull origin master  # 把长途分支pull下去,及时更新
    git  merge dev          # 把dev分支的代码兼并到master上
    git status              # 检查状况
    git push origin master  # push到长途分支
    

    本地库房一起相关多个远端库房(gitee, github, gitlab…)

    因为Git自身是分布式版别控制体系,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。

    运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin,假如有多个长途库,咱们需求用不同的称号来标识不同的长途库, 详细操作过程如下:

    1. 先删去已相关的名为origin的长途库:
    git remote rm origin
    
    1. 再相关GitHub的长途库:
    git remote add github git@github.com:all-smile/pc-web.git
    

    留意: 长途库的称号叫github,不叫origin了。

    1. 接着,再相关Gitee的长途库:
    git remote add gitee git@gitee.com:hey-u/pc-web.git
    

    相同留意,长途库的称号叫gitee,不叫origin。

    1. 检查长途库信息
    git remote -v
    gitee   git@gitee.com:hey-u/pc-web.git (fetch)
    gitee   git@gitee.com:hey-u/pc-web.git (push)
    github  git@github.com:all-smile/pc-web.git (fetch)
    github  git@github.com:all-smile/pc-web.git (push)
    
    1. 本地修正推送到远端
    • 推送到GitHub
    git push github master
    
    • 推送到Gitee
    git push gitee master
    

    也能够在运用NPM包管理东西的项目增加如下scripts脚本

    "scripts": {
        "pull": "git pull github master && git pull gitee master",
        "push": "git push github master && git push gitee master"
    },
    

    拉取/推送的时分运用

    npm run pull
    npm run push
    

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    官网文档: git-scm.com/doc

    (更多…)
    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有
    1. 吊销本地分支与长途分支的联系

    git branch --unset-upstream

    1. 兼并分支
    git  checkout master    # 切换到master分支上
    git pull origin master  # 把长途分支pull下去,及时更新
    git  merge dev          # 把dev分支的代码兼并到master上
    git status              # 检查状况
    git push origin master  # push到长途分支
    

    本地库房一起相关多个远端库房(gitee, github, gitlab…)

    因为Git自身是分布式版别控制体系,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。

    运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin,假如有多个长途库,咱们需求用不同的称号来标识不同的长途库, 详细操作过程如下:

    1. 先删去已相关的名为origin的长途库:
    git remote rm origin
    
    1. 再相关GitHub的长途库:
    git remote add github git@github.com:all-smile/pc-web.git
    

    留意: 长途库的称号叫github,不叫origin了。

    1. 接着,再相关Gitee的长途库:
    git remote add gitee git@gitee.com:hey-u/pc-web.git
    

    相同留意,长途库的称号叫gitee,不叫origin。

    1. 检查长途库信息
    git remote -v
    gitee   git@gitee.com:hey-u/pc-web.git (fetch)
    gitee   git@gitee.com:hey-u/pc-web.git (push)
    github  git@github.com:all-smile/pc-web.git (fetch)
    github  git@github.com:all-smile/pc-web.git (push)
    
    1. 本地修正推送到远端
    • 推送到GitHub
    git push github master
    
    • 推送到Gitee
    git push gitee master
    

    也能够在运用NPM包管理东西的项目增加如下scripts脚本

    "scripts": {
        "pull": "git pull github master && git pull gitee master",
        "push": "git push github master && git push gitee master"
    },
    

    拉取/推送的时分运用

    npm run pull
    npm run push
    

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    官网文档: git-scm.com/doc

    (更多…)
    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有
    1. 吊销本地分支与长途分支的联系

    git branch --unset-upstream

    1. 兼并分支
    git  checkout master    # 切换到master分支上
    git pull origin master  # 把长途分支pull下去,及时更新
    git  merge dev          # 把dev分支的代码兼并到master上
    git status              # 检查状况
    git push origin master  # push到长途分支
    

    本地库房一起相关多个远端库房(gitee, github, gitlab…)

    因为Git自身是分布式版别控制体系,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。

    运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin,假如有多个长途库,咱们需求用不同的称号来标识不同的长途库, 详细操作过程如下:

    1. 先删去已相关的名为origin的长途库:
    git remote rm origin
    
    1. 再相关GitHub的长途库:
    git remote add github git@github.com:all-smile/pc-web.git
    

    留意: 长途库的称号叫github,不叫origin了。

    1. 接着,再相关Gitee的长途库:
    git remote add gitee git@gitee.com:hey-u/pc-web.git
    

    相同留意,长途库的称号叫gitee,不叫origin。

    1. 检查长途库信息
    git remote -v
    gitee   git@gitee.com:hey-u/pc-web.git (fetch)
    gitee   git@gitee.com:hey-u/pc-web.git (push)
    github  git@github.com:all-smile/pc-web.git (fetch)
    github  git@github.com:all-smile/pc-web.git (push)
    
    1. 本地修正推送到远端
    • 推送到GitHub
    git push github master
    
    • 推送到Gitee
    git push gitee master
    

    也能够在运用NPM包管理东西的项目增加如下scripts脚本

    "scripts": {
        "pull": "git pull github master && git pull gitee master",
        "push": "git push github master && git push gitee master"
    },
    

    拉取/推送的时分运用

    npm run pull
    npm run push
    

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    官网文档: git-scm.com/doc

    (更多…)
    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有
    1. 吊销本地分支与长途分支的联系

    git branch --unset-upstream

    1. 兼并分支
    git  checkout master    # 切换到master分支上
    git pull origin master  # 把长途分支pull下去,及时更新
    git  merge dev          # 把dev分支的代码兼并到master上
    git status              # 检查状况
    git push origin master  # push到长途分支
    

    本地库房一起相关多个远端库房(gitee, github, gitlab…)

    因为Git自身是分布式版别控制体系,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。

    运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin,假如有多个长途库,咱们需求用不同的称号来标识不同的长途库, 详细操作过程如下:

    1. 先删去已相关的名为origin的长途库:
    git remote rm origin
    
    1. 再相关GitHub的长途库:
    git remote add github git@github.com:all-smile/pc-web.git
    

    留意: 长途库的称号叫github,不叫origin了。

    1. 接着,再相关Gitee的长途库:
    git remote add gitee git@gitee.com:hey-u/pc-web.git
    

    相同留意,长途库的称号叫gitee,不叫origin。

    1. 检查长途库信息
    git remote -v
    gitee   git@gitee.com:hey-u/pc-web.git (fetch)
    gitee   git@gitee.com:hey-u/pc-web.git (push)
    github  git@github.com:all-smile/pc-web.git (fetch)
    github  git@github.com:all-smile/pc-web.git (push)
    
    1. 本地修正推送到远端
    • 推送到GitHub
    git push github master
    
    • 推送到Gitee
    git push gitee master
    

    也能够在运用NPM包管理东西的项目增加如下scripts脚本

    "scripts": {
        "pull": "git pull github master && git pull gitee master",
        "push": "git push github master && git push gitee master"
    },
    

    拉取/推送的时分运用

    npm run pull
    npm run push
    

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    官网文档: git-scm.com/doc

    (更多…)
    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    git相关问题解析,你想要的都有
    1. 吊销本地分支与长途分支的联系

    git branch --unset-upstream

    1. 兼并分支
    git  checkout master    # 切换到master分支上
    git pull origin master  # 把长途分支pull下去,及时更新
    git  merge dev          # 把dev分支的代码兼并到master上
    git status              # 检查状况
    git push origin master  # push到长途分支
    

    本地库房一起相关多个远端库房(gitee, github, gitlab…)

    因为Git自身是分布式版别控制体系,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。

    运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin,假如有多个长途库,咱们需求用不同的称号来标识不同的长途库, 详细操作过程如下:

    1. 先删去已相关的名为origin的长途库:
    git remote rm origin
    
    1. 再相关GitHub的长途库:
    git remote add github git@github.com:all-smile/pc-web.git
    

    留意: 长途库的称号叫github,不叫origin了。

    1. 接着,再相关Gitee的长途库:
    git remote add gitee git@gitee.com:hey-u/pc-web.git
    

    相同留意,长途库的称号叫gitee,不叫origin。

    1. 检查长途库信息
    git remote -v
    gitee   git@gitee.com:hey-u/pc-web.git (fetch)
    gitee   git@gitee.com:hey-u/pc-web.git (push)
    github  git@github.com:all-smile/pc-web.git (fetch)
    github  git@github.com:all-smile/pc-web.git (push)
    
    1. 本地修正推送到远端
    • 推送到GitHub
    git push github master
    
    • 推送到Gitee
    git push gitee master
    

    也能够在运用NPM包管理东西的项目增加如下scripts脚本

    "scripts": {
        "pull": "git pull github master && git pull gitee master",
        "push": "git push github master && git push gitee master"
    },
    

    拉取/推送的时分运用

    npm run pull
    npm run push
    

    git相关问题解析,你想要的都有

    将长途 URL 从 HTTPS 切换到 SSH

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git(fetch)
    origin https://github.com/USERNAME/REPOSITORY.git(push)
    
    • 运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    

    将长途 URL 从 SSH 切换到 HTTPS

    • 翻开Terminal(终端)。
    • 将当时作业目录更改为您的本地库房。
    • 列呈现有长途库房以获取要更改的长途库房的称号。
    git remote -v
    origin git@github.com:USERNAME/REPOSITORY.git (fetch)
    origin git@github.com:USERNAME/REPOSITORY.git (push)
    
    • 运用git remote set-url指令将长途的 URL 从 SSH 更改为 HTTPS。
    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    • 验证长途 URL 是否已更改。
    git remote -v
    origin https://github.com/USERNAME/REPOSITORY.git (fetch)
    origin https://github.com/USERNAME/REPOSITORY.git (push)
    

    设置git提交用户信息

    这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章: 语雀:github/gitlab/gitee 个人主页无法计算提交记载

    后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:

    1. 我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
    2. 前端项目提交运用体系级的git用户装备 做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?

    怎么检查”.gitconfig”文件

    在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息 再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:

    git相关问题解析,你想要的都有

    git log 不能正确显现中英文

    git config --global core.quotepath false

    git config --global core.pager more

    tag 标签

    git相关问题解析,你想要的都有

    git tag -a <tagname:v1.0.0> -m "标签描绘"
    # 将tag显现的推送到长途库房
    git push origin v1.0.0
    #-------------------
    # 打 tag (tag指向commit ID)
    git tag -a <tagname:v1.0.0> -m "标签描绘"
    eg: git tag -a v1.0.0 -m "test"
    # 推送tag
    git push github v1.0.0
    git push gitee v1.0.0
    # 获取tag
    git tag
    # 删去本地`tag`
    git tag -d 标签名
    eg:git tag -d v3.1.0
    # 删去长途`tag`
    git push origin :refs/tags/标签名
    eg:git push origin :refs/tags/v3.1.0
    

    更新tag(不主张运用)

    有副效果,一般的做法是删去 tag, 从头打,或许递加tag值

    git tag -a -f <tag称号> <新的commit ID>
    

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    git commit 信息的标准设置

    1. commitlint 装备
    • feat: 新功能、新特性
    • fix: 修正 bug
    • perf: 更改代码,以进步功能
    • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修正)
    • docs: 文档修正
    • style: 代码格局修正, 留意不是 css 修正(例如分号修正)
    • test: 测验用例新增、修正
    • build: 影响项目构建或依靠项修正
    • revert: 康复上一次提交
    • ci: 继续集成相关文件修正
    • chore: 其他修正(不在上述类型中的修正)
    • release: 发布新版别
    • workflow: 作业流相关文件修正

    假如想进一步设置代码的书写标准,请看这儿:perttier+eslint+husky 运用

    fatal: refusing to merge unrelated histories

    git pull 的时分报错 回绝兼并无关前史记载 粗犷处理:

    运用强制指令
    git pull origin master --allow-unrelated-historie 
    

    生成ssh密钥对

    1. 右键 git bash ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车

    2. 复制公钥到剪切板

    cat ~/.ssh/id_rsa.pub | clip

    3.登录gitlap装备公钥

    vscose装备git bash

    1. vscode装备bash 右键git bash here 履行指令: where bash : 获取bash应用程序途径

    2. vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正

    3. 增加装备项

    “terminal.integrated.shell.windows”: “填写获取到的bash途径”, “terminal.integrated.automationShell.windows”: “填写获取到的bash途径”

    where bash 指令在安全账户(多账户下)有兼容问题 去掉usr途径 D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe

    必要的git bash装备

    git config --global user.name "xxx"
    git config --global user.email "xxx@123.com"
    git config --global core.autocrlf false   // 不同渠道mac/windows/linux下换行符(n, rn, r)不共同的问题 
    git config --global core.longpaths true
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf-8
    git config --global i18n.commitencoding utf-8
    git config --global gui.encoding utf-8
    echo "export LANG=zh_CN.UTF-8" >> ~/.bash_profile
    echo "export LESSCHARSET=UTF-8" >> ~/.bash_profile
    

    代码换行符告警问题

    参阅我的另一篇:Delete eslint(prettier/prettier) 过错的处理方案

    上面的都是经过标准个人的行为来坚持版别库的共同,但团队开发中仍是会有人不恪守标准,导致呈现一些问题,所以最终的处理方案应该是跟从项目供给一个装备文件(.gitattributes),而且处以最高的优先级(像eslint装备相同),gitattributes这儿供给了一系列针对各种开发环境,现已写好了的 “.gitattributes` 文件。

    • 参阅网络文章: www.jianshu.com/p/fa4d5963b…

    • 参阅我的另一篇详解: .gitattributes 文件效果详细解说

    • .gitattributes 具有最高的优先级,不管你是否设置相关的换行符风格转化特点,你都能够和团队坚持共同;

    • 运用 * text=auto 能够界说敞开大局的换行符转化;

    • 运用 *.bat text eol=crlf 就能够确保 Windows 的批处理文件在 checkout 至作业区时,一直被转化为 CRLF 风格的换行符;

    • 运用 *.sh text eol=lf 就能够确保 Bash 脚本不管在哪个渠道上,只要被 checkout 至作业区,一直被坚持 LF 风格的换行符;

    • 运用 *.jpg -text 能够制止 Git 将 jpg 文件识别为文本文件,然后防止因为换行符转化引进的数据损坏;

    Windows Linux/Mac Old Mac(pre-OSX)
    CRLF LF CR
    ‘nr’ ‘n’ ‘r’

    Windows 提交时转化为LF,检出时转化为CRLF

    git config --local core.autocrlf true
    

    多个github账号下,生成的key不能一起在两个github下面运用,导致增加失利:Key is already in use

    git相关问题解析,你想要的都有

    这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了

    能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。

    不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下

    增加ssh之后 git clone xxx还不可

    git相关问题解析,你想要的都有

    git相关问题解析,你想要的都有

    测验一:

    装备ssh config

    # gitcode - csdn
    Host gitcode.net
      HostName gitcode.net
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitcode
    # gitlab
    Host gitlab.com
      HostName gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # gitee
    Host gitee.com
      HostName gitee.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa
    # 公共装备
    # Host *
    #   key value
    # 其它密钥对阐明
    # 18143945157 : github-cli 运用的
    # gh-pages : hexo deploy_key 设置
    

    再次测验衔接

    ssh -T git@gitlab.com
    

    测验二

    ssh-keygen -R 你要拜访的IP地址
    ssh-keygen -R git@gitlab.com:all-smile/gitbook.git
    Host git@gitlab.com:all-smile/gitbook.git not found in /c/Users/xiao/.ssh/known_hosts
    

    修正 known_hosts 的文件姓名,也便是让它不起效果。(host)

    从头clone ,生成新的 known_hosts

    ping gitlab.com
    

    修正commit提交信息

    状况一、修正最终一次的提交信息

    1. git commit --amend

    然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可

    1. git push

    状况二、修正指定commit的提交信息

    1. git log 检查信息,获取到commmit-id

    2. git rebase -i 6579ghjk^

    变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正

    1. git commit –amend 修正commit信息

    2. 履行 git rebase –continue 指令完结剩下的 rebase 操作。

    假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:

    git rebase --continue
    Successfully rebased and updated refs/heads/develop
    

    到这儿现已完结了变基操作的一切节点,

    1. 履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。

    2. git push

    Git本地有四个作业区域

    作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下

    git相关问题解析,你想要的都有

    • Workspace: 作业区,便是你平常寄存项目代码的当地

    • Index / Stage: 暂存区,用于暂时寄存你的改动,事实上它仅仅一个文件,保存行将提交到文件列表信息

    • Repository: 库房区(或版别库),便是安全寄存数据的方位,这儿面有你提交到一切版别的数据。其间HEAD指向最新放入库房的版别

    • Remote: 长途库房,保管代码的服务器,能够简略的认为是你项目组中的一台电脑用于长途数据交换

    重置提交

    状况一、没有push到长途的状况(仅仅在本地commit)

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和长途分支都是 develop)
    
    • --mixed 为默许,能够不必带该参数,用于重置暂存区的文件与上一次的提交(commit)坚持共同,作业区文件内容坚持不变。仅仅将git commit和index 信息回退到了某个版别。

    • --soft 保存源码,只回退到commit信息到某个版别.不触及index的回退,假如还需求提交,直接commit即可。 git reset --soft HEAD

    • --hard 参数吊销作业区中一切未提交的修正内容,将暂存区与作业区都回到上一次版别,并删去之前的一切信息提交。

    状况二、现已push到长途的状况

    关于现已把代码push到线上库房,你回退本地代码其实也想一起回退线上代码,回滚到某个指定的版别,线上线下代码坚持共同,你要用到下面的指令

    git revert <commit_id>
    

    revert 之后你的本地代码会回滚到指定的前史版别,这时你再 git push 既能够把线上的代码更新。

    git revert是用一次新的commit来回滚之前的commit

    HEAD 阐明:

    • HEAD 表明当时版别
    • HEAD^ 上一个版别
    • HEAD^^ 上上一个版别
    • HEAD^^^ 上上上一个版别
    • 以此类推…

    能够运用 ~数字表明

    • HEAD~0 表明当时版别
    • HEAD~1 上一个版别
    • HEAD^2 上上一个版别
    • HEAD^3 上上上一个版别
    • 以此类推…

    其它相关文章引荐

    • git submodule
    • js获取git分支信息
    • git 组合提交信息
    • 从Git规划原理到事务体系规划与开发

    git相关问题解析,你想要的都有

    我是 甜点cc

    微信大众号:【看见另一种或许】

    专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。

    本文正在参与「金石方案 . 分割6万现金大奖」

    官网文档: git-scm.com/doc

    (更多…)
  • Javascript 面向对象的缺陷,父类能调用被子类重写后的方法

    Javascript 面向对象的缺陷,父类能调用被子类重写后的方法

    本文已参加「新人创造礼」活动,一同敞开创造之路。

    (更多…)

  • 深入React Diff算法

    fiber上的updateQueue经过React的一番核算之后,这个fiber现已有了新的状况,也便是state,关于类组件来说,state是在render函数里被运用的,已然现已得到了新的state,那么当务之急是履行一次render,得到持有新state的ReactElement。

    (更多…)

  • Rust 中的 trait 抽象和约束

    Rust 中的 trait 抽象和约束

    trait 相似于其他编程言语中的常被称为接口(interface)的功能,但还是有一些差异的。 trait 告诉 Rust 编译器某个特定类型具有或许与其他类型同享的功能。能够经过 trait 以一种笼统的办法界说同享的行为。能够运用 trait bounds 指定泛型是任何具有特定行为的类型。

    (更多…)

  • iOS 性能优化 — APP启动时间解析

    iOS 性能优化 — APP启动时间解析

    “我报名参加金石方案1期应战——分割10万奖池,这是我的第1篇文章,点击检查活动概略”

    (更多…)

  • Git的多种工作流

    Git的多种工作流

    经过本文你能够了解到:

    (更多…)