“terminal.integrated.shell.windows”: “填写获取到的bash途径”,
“terminal.integrated.automationShell.windows”: “填写获取到的bash途径”
where bash 指令在安全账户(多账户下)有兼容问题
去掉usr途径
D:/Git/usr/bin/bash.exe -> D:/Git/bin/bash.exe
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
官网文档: git-scm.com/doc
本地克隆长途代码库房
git clone 地址
本地同步全量前史数据 ,克隆一切文件的前史记载
git clone 地址 —depth 1
本地同步默许分支最近n次的commit信息 ,克隆默许分支master最近一次commit
git clone 地址 —depth 1 —branch dev
本地同步指定分支最近n次的commit信息 ,克隆dev分支最近一次commit
第三种方法克隆下来只存在指定的分支,假如想要切换分支,运用下面的指令
git remote set - branches origin 'remote_branch_name'
git fetch
git checkout remote_branch_name
常用git指令(更新中…)
显现一切提交过的用户,按提交次数排序
git shortlog -sn
显现指定文件是什么人在什么时刻修正过
git blame [file]
eg: git blame README.md
Git 中的分支是指向提交的指针 ,是从特定时刻点开端的项目及其更改的快照 。
删去本地分支
git branch -d local_branch_name
切换分支
将远端分支拉取到本地(本地切换到长途分支,存在远端分支,需求在本地)
git checkout -b dev origin/dev
相关长途分支
将本地新建的分支与长途分支相相关(在当时分支下输入以下指令)
git branch -u origin/分支名
其间origin/xxx xxx为长途分支名
eg: git branch -u origin/master 本地分支相关长途master分支
或许运用 git branch –set-upstream-to origin/xxx 相同能够相关
检查本地分支与长途分支的映射联系(检查相关效果)
git branch -vv
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
官网文档: git-scm.com/doc
本地克隆长途代码库房
git clone 地址
本地同步全量前史数据 ,克隆一切文件的前史记载
git clone 地址 —depth 1
本地同步默许分支最近n次的commit信息 ,克隆默许分支master最近一次commit
git clone 地址 —depth 1 —branch dev
本地同步指定分支最近n次的commit信息 ,克隆dev分支最近一次commit
第三种方法克隆下来只存在指定的分支,假如想要切换分支,运用下面的指令
git remote set - branches origin 'remote_branch_name'
git fetch
git checkout remote_branch_name
常用git指令(更新中…)
显现一切提交过的用户,按提交次数排序
git shortlog -sn
显现指定文件是什么人在什么时刻修正过
git blame [file]
eg: git blame README.md
Git 中的分支是指向提交的指针 ,是从特定时刻点开端的项目及其更改的快照 。
删去本地分支
git branch -d local_branch_name
切换分支
将远端分支拉取到本地(本地切换到长途分支,存在远端分支,需求在本地)
git checkout -b dev origin/dev
相关长途分支
将本地新建的分支与长途分支相相关(在当时分支下输入以下指令)
git branch -u origin/分支名
其间origin/xxx xxx为长途分支名
eg: git branch -u origin/master 本地分支相关长途master分支
或许运用 git branch –set-upstream-to origin/xxx 相同能够相关
检查本地分支与长途分支的映射联系(检查相关效果)
git branch -vv
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
官网文档: git-scm.com/doc
本地克隆长途代码库房
git clone 地址
本地同步全量前史数据 ,克隆一切文件的前史记载
git clone 地址 —depth 1
本地同步默许分支最近n次的commit信息 ,克隆默许分支master最近一次commit
git clone 地址 —depth 1 —branch dev
本地同步指定分支最近n次的commit信息 ,克隆dev分支最近一次commit
第三种方法克隆下来只存在指定的分支,假如想要切换分支,运用下面的指令
git remote set - branches origin 'remote_branch_name'
git fetch
git checkout remote_branch_name
常用git指令(更新中…)
显现一切提交过的用户,按提交次数排序
git shortlog -sn
显现指定文件是什么人在什么时刻修正过
git blame [file]
eg: git blame README.md
Git 中的分支是指向提交的指针 ,是从特定时刻点开端的项目及其更改的快照 。
删去本地分支
git branch -d local_branch_name
切换分支
将远端分支拉取到本地(本地切换到长途分支,存在远端分支,需求在本地)
git checkout -b dev origin/dev
相关长途分支
将本地新建的分支与长途分支相相关(在当时分支下输入以下指令)
git branch -u origin/分支名
其间origin/xxx xxx为长途分支名
eg: git branch -u origin/master 本地分支相关长途master分支
或许运用 git branch –set-upstream-to origin/xxx 相同能够相关
检查本地分支与长途分支的映射联系(检查相关效果)
git branch -vv
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
官网文档: git-scm.com/doc
本地克隆长途代码库房
git clone 地址
本地同步全量前史数据 ,克隆一切文件的前史记载
git clone 地址 —depth 1
本地同步默许分支最近n次的commit信息 ,克隆默许分支master最近一次commit
git clone 地址 —depth 1 —branch dev
本地同步指定分支最近n次的commit信息 ,克隆dev分支最近一次commit
第三种方法克隆下来只存在指定的分支,假如想要切换分支,运用下面的指令
git remote set - branches origin 'remote_branch_name'
git fetch
git checkout remote_branch_name
常用git指令(更新中…)
显现一切提交过的用户,按提交次数排序
git shortlog -sn
显现指定文件是什么人在什么时刻修正过
git blame [file]
eg: git blame README.md
Git 中的分支是指向提交的指针 ,是从特定时刻点开端的项目及其更改的快照 。
删去本地分支
git branch -d local_branch_name
切换分支
将远端分支拉取到本地(本地切换到长途分支,存在远端分支,需求在本地)
git checkout -b dev origin/dev
相关长途分支
将本地新建的分支与长途分支相相关(在当时分支下输入以下指令)
git branch -u origin/分支名
其间origin/xxx xxx为长途分支名
eg: git branch -u origin/master 本地分支相关长途master分支
或许运用 git branch –set-upstream-to origin/xxx 相同能够相关
检查本地分支与长途分支的映射联系(检查相关效果)
git branch -vv
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
官网文档: git-scm.com/doc
本地克隆长途代码库房
git clone 地址
本地同步全量前史数据 ,克隆一切文件的前史记载
git clone 地址 —depth 1
本地同步默许分支最近n次的commit信息 ,克隆默许分支master最近一次commit
git clone 地址 —depth 1 —branch dev
本地同步指定分支最近n次的commit信息 ,克隆dev分支最近一次commit
第三种方法克隆下来只存在指定的分支,假如想要切换分支,运用下面的指令
git remote set - branches origin 'remote_branch_name'
git fetch
git checkout remote_branch_name
常用git指令(更新中…)
显现一切提交过的用户,按提交次数排序
git shortlog -sn
显现指定文件是什么人在什么时刻修正过
git blame [file]
eg: git blame README.md
Git 中的分支是指向提交的指针 ,是从特定时刻点开端的项目及其更改的快照 。
删去本地分支
git branch -d local_branch_name
切换分支
将远端分支拉取到本地(本地切换到长途分支,存在远端分支,需求在本地)
git checkout -b dev origin/dev
相关长途分支
将本地新建的分支与长途分支相相关(在当时分支下输入以下指令)
git branch -u origin/分支名
其间origin/xxx xxx为长途分支名
eg: git branch -u origin/master 本地分支相关长途master分支
或许运用 git branch –set-upstream-to origin/xxx 相同能够相关
检查本地分支与长途分支的映射联系(检查相关效果)
git branch -vv
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
官网文档: git-scm.com/doc
本地克隆长途代码库房
git clone 地址
本地同步全量前史数据 ,克隆一切文件的前史记载
git clone 地址 —depth 1
本地同步默许分支最近n次的commit信息 ,克隆默许分支master最近一次commit
git clone 地址 —depth 1 —branch dev
本地同步指定分支最近n次的commit信息 ,克隆dev分支最近一次commit
第三种方法克隆下来只存在指定的分支,假如想要切换分支,运用下面的指令
git remote set - branches origin 'remote_branch_name'
git fetch
git checkout remote_branch_name
常用git指令(更新中…)
显现一切提交过的用户,按提交次数排序
git shortlog -sn
显现指定文件是什么人在什么时刻修正过
git blame [file]
eg: git blame README.md
Git 中的分支是指向提交的指针 ,是从特定时刻点开端的项目及其更改的快照 。
删去本地分支
git branch -d local_branch_name
切换分支
将远端分支拉取到本地(本地切换到长途分支,存在远端分支,需求在本地)
git checkout -b dev origin/dev
相关长途分支
将本地新建的分支与长途分支相相关(在当时分支下输入以下指令)
git branch -u origin/分支名
其间origin/xxx xxx为长途分支名
eg: git branch -u origin/master 本地分支相关长途master分支
或许运用 git branch –set-upstream-to origin/xxx 相同能够相关
检查本地分支与长途分支的映射联系(检查相关效果)
git branch -vv
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
官网文档: git-scm.com/doc
本地克隆长途代码库房
git clone 地址
本地同步全量前史数据 ,克隆一切文件的前史记载
git clone 地址 —depth 1
本地同步默许分支最近n次的commit信息 ,克隆默许分支master最近一次commit
git clone 地址 —depth 1 —branch dev
本地同步指定分支最近n次的commit信息 ,克隆dev分支最近一次commit
第三种方法克隆下来只存在指定的分支,假如想要切换分支,运用下面的指令
git remote set - branches origin 'remote_branch_name'
git fetch
git checkout remote_branch_name
常用git指令(更新中…)
显现一切提交过的用户,按提交次数排序
git shortlog -sn
显现指定文件是什么人在什么时刻修正过
git blame [file]
eg: git blame README.md
Git 中的分支是指向提交的指针 ,是从特定时刻点开端的项目及其更改的快照 。
删去本地分支
git branch -d local_branch_name
切换分支
将远端分支拉取到本地(本地切换到长途分支,存在远端分支,需求在本地)
git checkout -b dev origin/dev
相关长途分支
将本地新建的分支与长途分支相相关(在当时分支下输入以下指令)
git branch -u origin/分支名
其间origin/xxx xxx为长途分支名
eg: git branch -u origin/master 本地分支相关长途master分支
或许运用 git branch –set-upstream-to origin/xxx 相同能够相关
检查本地分支与长途分支的映射联系(检查相关效果)
git branch -vv
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
官网文档: git-scm.com/doc
本地克隆长途代码库房
git clone 地址
本地同步全量前史数据 ,克隆一切文件的前史记载
git clone 地址 —depth 1
本地同步默许分支最近n次的commit信息 ,克隆默许分支master最近一次commit
git clone 地址 —depth 1 —branch dev
本地同步指定分支最近n次的commit信息 ,克隆dev分支最近一次commit
第三种方法克隆下来只存在指定的分支,假如想要切换分支,运用下面的指令
git remote set - branches origin 'remote_branch_name'
git fetch
git checkout remote_branch_name
常用git指令(更新中…)
显现一切提交过的用户,按提交次数排序
git shortlog -sn
显现指定文件是什么人在什么时刻修正过
git blame [file]
eg: git blame README.md
Git 中的分支是指向提交的指针 ,是从特定时刻点开端的项目及其更改的快照 。
删去本地分支
git branch -d local_branch_name
切换分支
将远端分支拉取到本地(本地切换到长途分支,存在远端分支,需求在本地)
git checkout -b dev origin/dev
相关长途分支
将本地新建的分支与长途分支相相关(在当时分支下输入以下指令)
git branch -u origin/分支名
其间origin/xxx xxx为长途分支名
eg: git branch -u origin/master 本地分支相关长途master分支
或许运用 git branch –set-upstream-to origin/xxx 相同能够相关
检查本地分支与长途分支的映射联系(检查相关效果)
git branch -vv
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
官网文档: git-scm.com/doc
本地克隆长途代码库房
git clone 地址
本地同步全量前史数据 ,克隆一切文件的前史记载
git clone 地址 —depth 1
本地同步默许分支最近n次的commit信息 ,克隆默许分支master最近一次commit
git clone 地址 —depth 1 —branch dev
本地同步指定分支最近n次的commit信息 ,克隆dev分支最近一次commit
第三种方法克隆下来只存在指定的分支,假如想要切换分支,运用下面的指令
git remote set - branches origin 'remote_branch_name'
git fetch
git checkout remote_branch_name
常用git指令(更新中…)
显现一切提交过的用户,按提交次数排序
git shortlog -sn
显现指定文件是什么人在什么时刻修正过
git blame [file]
eg: git blame README.md
Git 中的分支是指向提交的指针 ,是从特定时刻点开端的项目及其更改的快照 。
删去本地分支
git branch -d local_branch_name
切换分支
将远端分支拉取到本地(本地切换到长途分支,存在远端分支,需求在本地)
git checkout -b dev origin/dev
相关长途分支
将本地新建的分支与长途分支相相关(在当时分支下输入以下指令)
git branch -u origin/分支名
其间origin/xxx xxx为长途分支名
eg: git branch -u origin/master 本地分支相关长途master分支
或许运用 git branch –set-upstream-to origin/xxx 相同能够相关
检查本地分支与长途分支的映射联系(检查相关效果)
git branch -vv
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
官网文档: git-scm.com/doc
本地克隆长途代码库房
git clone 地址
本地同步全量前史数据 ,克隆一切文件的前史记载
git clone 地址 —depth 1
本地同步默许分支最近n次的commit信息 ,克隆默许分支master最近一次commit
git clone 地址 —depth 1 —branch dev
本地同步指定分支最近n次的commit信息 ,克隆dev分支最近一次commit
第三种方法克隆下来只存在指定的分支,假如想要切换分支,运用下面的指令
git remote set - branches origin 'remote_branch_name'
git fetch
git checkout remote_branch_name
常用git指令(更新中…)
显现一切提交过的用户,按提交次数排序
git shortlog -sn
显现指定文件是什么人在什么时刻修正过
git blame [file]
eg: git blame README.md
Git 中的分支是指向提交的指针 ,是从特定时刻点开端的项目及其更改的快照 。
删去本地分支
git branch -d local_branch_name
切换分支
将远端分支拉取到本地(本地切换到长途分支,存在远端分支,需求在本地)
git checkout -b dev origin/dev
相关长途分支
将本地新建的分支与长途分支相相关(在当时分支下输入以下指令)
git branch -u origin/分支名
其间origin/xxx xxx为长途分支名
eg: git branch -u origin/master 本地分支相关长途master分支
或许运用 git branch –set-upstream-to origin/xxx 相同能够相关
检查本地分支与长途分支的映射联系(检查相关效果)
git branch -vv
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
官网文档: git-scm.com/doc
本地克隆长途代码库房
git clone 地址
本地同步全量前史数据 ,克隆一切文件的前史记载
git clone 地址 —depth 1
本地同步默许分支最近n次的commit信息 ,克隆默许分支master最近一次commit
git clone 地址 —depth 1 —branch dev
本地同步指定分支最近n次的commit信息 ,克隆dev分支最近一次commit
第三种方法克隆下来只存在指定的分支,假如想要切换分支,运用下面的指令
git remote set - branches origin 'remote_branch_name'
git fetch
git checkout remote_branch_name
常用git指令(更新中…)
显现一切提交过的用户,按提交次数排序
git shortlog -sn
显现指定文件是什么人在什么时刻修正过
git blame [file]
eg: git blame README.md
Git 中的分支是指向提交的指针 ,是从特定时刻点开端的项目及其更改的快照 。
删去本地分支
git branch -d local_branch_name
切换分支
将远端分支拉取到本地(本地切换到长途分支,存在远端分支,需求在本地)
git checkout -b dev origin/dev
相关长途分支
将本地新建的分支与长途分支相相关(在当时分支下输入以下指令)
git branch -u origin/分支名
其间origin/xxx xxx为长途分支名
eg: git branch -u origin/master 本地分支相关长途master分支
或许运用 git branch –set-upstream-to origin/xxx 相同能够相关
检查本地分支与长途分支的映射联系(检查相关效果)
git branch -vv
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
官网文档: git-scm.com/doc
本地克隆长途代码库房
git clone 地址
本地同步全量前史数据 ,克隆一切文件的前史记载
git clone 地址 —depth 1
本地同步默许分支最近n次的commit信息 ,克隆默许分支master最近一次commit
git clone 地址 —depth 1 —branch dev
本地同步指定分支最近n次的commit信息 ,克隆dev分支最近一次commit
第三种方法克隆下来只存在指定的分支,假如想要切换分支,运用下面的指令
git remote set - branches origin 'remote_branch_name'
git fetch
git checkout remote_branch_name
常用git指令(更新中…)
显现一切提交过的用户,按提交次数排序
git shortlog -sn
显现指定文件是什么人在什么时刻修正过
git blame [file]
eg: git blame README.md
Git 中的分支是指向提交的指针 ,是从特定时刻点开端的项目及其更改的快照 。
删去本地分支
git branch -d local_branch_name
切换分支
将远端分支拉取到本地(本地切换到长途分支,存在远端分支,需求在本地)
git checkout -b dev origin/dev
相关长途分支
将本地新建的分支与长途分支相相关(在当时分支下输入以下指令)
git branch -u origin/分支名
其间origin/xxx xxx为长途分支名
eg: git branch -u origin/master 本地分支相关长途master分支
或许运用 git branch –set-upstream-to origin/xxx 相同能够相关
检查本地分支与长途分支的映射联系(检查相关效果)
git branch -vv
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
官网文档: git-scm.com/doc
本地克隆长途代码库房
git clone 地址
本地同步全量前史数据 ,克隆一切文件的前史记载
git clone 地址 —depth 1
本地同步默许分支最近n次的commit信息 ,克隆默许分支master最近一次commit
git clone 地址 —depth 1 —branch dev
本地同步指定分支最近n次的commit信息 ,克隆dev分支最近一次commit
第三种方法克隆下来只存在指定的分支,假如想要切换分支,运用下面的指令
git remote set - branches origin 'remote_branch_name'
git fetch
git checkout remote_branch_name
常用git指令(更新中…)
显现一切提交过的用户,按提交次数排序
git shortlog -sn
显现指定文件是什么人在什么时刻修正过
git blame [file]
eg: git blame README.md
Git 中的分支是指向提交的指针 ,是从特定时刻点开端的项目及其更改的快照 。
删去本地分支
git branch -d local_branch_name
切换分支
将远端分支拉取到本地(本地切换到长途分支,存在远端分支,需求在本地)
git checkout -b dev origin/dev
相关长途分支
将本地新建的分支与长途分支相相关(在当时分支下输入以下指令)
git branch -u origin/分支名
其间origin/xxx xxx为长途分支名
eg: git branch -u origin/master 本地分支相关长途master分支
或许运用 git branch –set-upstream-to origin/xxx 相同能够相关
检查本地分支与长途分支的映射联系(检查相关效果)
git branch -vv
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
官网文档: git-scm.com/doc
本地克隆长途代码库房
git clone 地址
本地同步全量前史数据 ,克隆一切文件的前史记载
git clone 地址 —depth 1
本地同步默许分支最近n次的commit信息 ,克隆默许分支master最近一次commit
git clone 地址 —depth 1 —branch dev
本地同步指定分支最近n次的commit信息 ,克隆dev分支最近一次commit
第三种方法克隆下来只存在指定的分支,假如想要切换分支,运用下面的指令
git remote set - branches origin 'remote_branch_name'
git fetch
git checkout remote_branch_name
常用git指令(更新中…)
显现一切提交过的用户,按提交次数排序
git shortlog -sn
显现指定文件是什么人在什么时刻修正过
git blame [file]
eg: git blame README.md
Git 中的分支是指向提交的指针 ,是从特定时刻点开端的项目及其更改的快照 。
删去本地分支
git branch -d local_branch_name
切换分支
将远端分支拉取到本地(本地切换到长途分支,存在远端分支,需求在本地)
git checkout -b dev origin/dev
相关长途分支
将本地新建的分支与长途分支相相关(在当时分支下输入以下指令)
git branch -u origin/分支名
其间origin/xxx xxx为长途分支名
eg: git branch -u origin/master 本地分支相关长途master分支
或许运用 git branch –set-upstream-to origin/xxx 相同能够相关
检查本地分支与长途分支的映射联系(检查相关效果)
git branch -vv
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
官网文档: git-scm.com/doc
本地克隆长途代码库房
git clone 地址
本地同步全量前史数据 ,克隆一切文件的前史记载
git clone 地址 —depth 1
本地同步默许分支最近n次的commit信息 ,克隆默许分支master最近一次commit
git clone 地址 —depth 1 —branch dev
本地同步指定分支最近n次的commit信息 ,克隆dev分支最近一次commit
第三种方法克隆下来只存在指定的分支,假如想要切换分支,运用下面的指令
git remote set - branches origin 'remote_branch_name'
git fetch
git checkout remote_branch_name
常用git指令(更新中…)
显现一切提交过的用户,按提交次数排序
git shortlog -sn
显现指定文件是什么人在什么时刻修正过
git blame [file]
eg: git blame README.md
Git 中的分支是指向提交的指针 ,是从特定时刻点开端的项目及其更改的快照 。
删去本地分支
git branch -d local_branch_name
切换分支
将远端分支拉取到本地(本地切换到长途分支,存在远端分支,需求在本地)
git checkout -b dev origin/dev
相关长途分支
将本地新建的分支与长途分支相相关(在当时分支下输入以下指令)
git branch -u origin/分支名
其间origin/xxx xxx为长途分支名
eg: git branch -u origin/master 本地分支相关长途master分支
或许运用 git branch –set-upstream-to origin/xxx 相同能够相关
检查本地分支与长途分支的映射联系(检查相关效果)
git branch -vv
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
官网文档: git-scm.com/doc
本地克隆长途代码库房
git clone 地址
本地同步全量前史数据 ,克隆一切文件的前史记载
git clone 地址 —depth 1
本地同步默许分支最近n次的commit信息 ,克隆默许分支master最近一次commit
git clone 地址 —depth 1 —branch dev
本地同步指定分支最近n次的commit信息 ,克隆dev分支最近一次commit
第三种方法克隆下来只存在指定的分支,假如想要切换分支,运用下面的指令
git remote set - branches origin 'remote_branch_name'
git fetch
git checkout remote_branch_name
常用git指令(更新中…)
显现一切提交过的用户,按提交次数排序
git shortlog -sn
显现指定文件是什么人在什么时刻修正过
git blame [file]
eg: git blame README.md
Git 中的分支是指向提交的指针 ,是从特定时刻点开端的项目及其更改的快照 。
删去本地分支
git branch -d local_branch_name
切换分支
将远端分支拉取到本地(本地切换到长途分支,存在远端分支,需求在本地)
git checkout -b dev origin/dev
相关长途分支
将本地新建的分支与长途分支相相关(在当时分支下输入以下指令)
git branch -u origin/分支名
其间origin/xxx xxx为长途分支名
eg: git branch -u origin/master 本地分支相关长途master分支
或许运用 git branch –set-upstream-to origin/xxx 相同能够相关
检查本地分支与长途分支的映射联系(检查相关效果)
git branch -vv
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
官网文档: git-scm.com/doc
本地克隆长途代码库房
git clone 地址
本地同步全量前史数据 ,克隆一切文件的前史记载
git clone 地址 —depth 1
本地同步默许分支最近n次的commit信息 ,克隆默许分支master最近一次commit
git clone 地址 —depth 1 —branch dev
本地同步指定分支最近n次的commit信息 ,克隆dev分支最近一次commit
第三种方法克隆下来只存在指定的分支,假如想要切换分支,运用下面的指令
git remote set - branches origin 'remote_branch_name'
git fetch
git checkout remote_branch_name
常用git指令(更新中…)
显现一切提交过的用户,按提交次数排序
git shortlog -sn
显现指定文件是什么人在什么时刻修正过
git blame [file]
eg: git blame README.md
Git 中的分支是指向提交的指针 ,是从特定时刻点开端的项目及其更改的快照 。
删去本地分支
git branch -d local_branch_name
切换分支
将远端分支拉取到本地(本地切换到长途分支,存在远端分支,需求在本地)
git checkout -b dev origin/dev
相关长途分支
将本地新建的分支与长途分支相相关(在当时分支下输入以下指令)
git branch -u origin/分支名
其间origin/xxx xxx为长途分支名
eg: git branch -u origin/master 本地分支相关长途master分支
或许运用 git branch –set-upstream-to origin/xxx 相同能够相关
检查本地分支与长途分支的映射联系(检查相关效果)
git branch -vv
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
官网文档: git-scm.com/doc
本地克隆长途代码库房
git clone 地址
本地同步全量前史数据 ,克隆一切文件的前史记载
git clone 地址 —depth 1
本地同步默许分支最近n次的commit信息 ,克隆默许分支master最近一次commit
git clone 地址 —depth 1 —branch dev
本地同步指定分支最近n次的commit信息 ,克隆dev分支最近一次commit
第三种方法克隆下来只存在指定的分支,假如想要切换分支,运用下面的指令
git remote set - branches origin 'remote_branch_name'
git fetch
git checkout remote_branch_name
常用git指令(更新中…)
显现一切提交过的用户,按提交次数排序
git shortlog -sn
显现指定文件是什么人在什么时刻修正过
git blame [file]
eg: git blame README.md
Git 中的分支是指向提交的指针 ,是从特定时刻点开端的项目及其更改的快照 。
删去本地分支
git branch -d local_branch_name
切换分支
将远端分支拉取到本地(本地切换到长途分支,存在远端分支,需求在本地)
git checkout -b dev origin/dev
相关长途分支
将本地新建的分支与长途分支相相关(在当时分支下输入以下指令)
git branch -u origin/分支名
其间origin/xxx xxx为长途分支名
eg: git branch -u origin/master 本地分支相关长途master分支
或许运用 git branch –set-upstream-to origin/xxx 相同能够相关
检查本地分支与长途分支的映射联系(检查相关效果)
git branch -vv
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
官网文档: git-scm.com/doc
本地克隆长途代码库房
git clone 地址
本地同步全量前史数据 ,克隆一切文件的前史记载
git clone 地址 —depth 1
本地同步默许分支最近n次的commit信息 ,克隆默许分支master最近一次commit
git clone 地址 —depth 1 —branch dev
本地同步指定分支最近n次的commit信息 ,克隆dev分支最近一次commit
第三种方法克隆下来只存在指定的分支,假如想要切换分支,运用下面的指令
git remote set - branches origin 'remote_branch_name'
git fetch
git checkout remote_branch_name
常用git指令(更新中…)
显现一切提交过的用户,按提交次数排序
git shortlog -sn
显现指定文件是什么人在什么时刻修正过
git blame [file]
eg: git blame README.md
Git 中的分支是指向提交的指针 ,是从特定时刻点开端的项目及其更改的快照 。
删去本地分支
git branch -d local_branch_name
切换分支
将远端分支拉取到本地(本地切换到长途分支,存在远端分支,需求在本地)
git checkout -b dev origin/dev
相关长途分支
将本地新建的分支与长途分支相相关(在当时分支下输入以下指令)
git branch -u origin/分支名
其间origin/xxx xxx为长途分支名
eg: git branch -u origin/master 本地分支相关长途master分支
或许运用 git branch –set-upstream-to origin/xxx 相同能够相关
检查本地分支与长途分支的映射联系(检查相关效果)
git branch -vv
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
官网文档: git-scm.com/doc
本地克隆长途代码库房
git clone 地址
本地同步全量前史数据 ,克隆一切文件的前史记载
git clone 地址 —depth 1
本地同步默许分支最近n次的commit信息 ,克隆默许分支master最近一次commit
git clone 地址 —depth 1 —branch dev
本地同步指定分支最近n次的commit信息 ,克隆dev分支最近一次commit
第三种方法克隆下来只存在指定的分支,假如想要切换分支,运用下面的指令
git remote set - branches origin 'remote_branch_name'
git fetch
git checkout remote_branch_name
常用git指令(更新中…)
显现一切提交过的用户,按提交次数排序
git shortlog -sn
显现指定文件是什么人在什么时刻修正过
git blame [file]
eg: git blame README.md
Git 中的分支是指向提交的指针 ,是从特定时刻点开端的项目及其更改的快照 。
删去本地分支
git branch -d local_branch_name
切换分支
将远端分支拉取到本地(本地切换到长途分支,存在远端分支,需求在本地)
git checkout -b dev origin/dev
相关长途分支
将本地新建的分支与长途分支相相关(在当时分支下输入以下指令)
git branch -u origin/分支名
其间origin/xxx xxx为长途分支名
eg: git branch -u origin/master 本地分支相关长途master分支
或许运用 git branch –set-upstream-to origin/xxx 相同能够相关
检查本地分支与长途分支的映射联系(检查相关效果)
git branch -vv
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
官网文档: git-scm.com/doc
本地克隆长途代码库房
git clone 地址
本地同步全量前史数据 ,克隆一切文件的前史记载
git clone 地址 —depth 1
本地同步默许分支最近n次的commit信息 ,克隆默许分支master最近一次commit
git clone 地址 —depth 1 —branch dev
本地同步指定分支最近n次的commit信息 ,克隆dev分支最近一次commit
第三种方法克隆下来只存在指定的分支,假如想要切换分支,运用下面的指令
git remote set - branches origin 'remote_branch_name'
git fetch
git checkout remote_branch_name
常用git指令(更新中…)
显现一切提交过的用户,按提交次数排序
git shortlog -sn
显现指定文件是什么人在什么时刻修正过
git blame [file]
eg: git blame README.md
Git 中的分支是指向提交的指针 ,是从特定时刻点开端的项目及其更改的快照 。
删去本地分支
git branch -d local_branch_name
切换分支
将远端分支拉取到本地(本地切换到长途分支,存在远端分支,需求在本地)
git checkout -b dev origin/dev
相关长途分支
将本地新建的分支与长途分支相相关(在当时分支下输入以下指令)
git branch -u origin/分支名
其间origin/xxx xxx为长途分支名
eg: git branch -u origin/master 本地分支相关长途master分支
或许运用 git branch –set-upstream-to origin/xxx 相同能够相关
检查本地分支与长途分支的映射联系(检查相关效果)
git branch -vv
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
官网文档: git-scm.com/doc
本地克隆长途代码库房
git clone 地址
本地同步全量前史数据 ,克隆一切文件的前史记载
git clone 地址 —depth 1
本地同步默许分支最近n次的commit信息 ,克隆默许分支master最近一次commit
git clone 地址 —depth 1 —branch dev
本地同步指定分支最近n次的commit信息 ,克隆dev分支最近一次commit
第三种方法克隆下来只存在指定的分支,假如想要切换分支,运用下面的指令
git remote set - branches origin 'remote_branch_name'
git fetch
git checkout remote_branch_name
常用git指令(更新中…)
显现一切提交过的用户,按提交次数排序
git shortlog -sn
显现指定文件是什么人在什么时刻修正过
git blame [file]
eg: git blame README.md
Git 中的分支是指向提交的指针 ,是从特定时刻点开端的项目及其更改的快照 。
删去本地分支
git branch -d local_branch_name
切换分支
将远端分支拉取到本地(本地切换到长途分支,存在远端分支,需求在本地)
git checkout -b dev origin/dev
相关长途分支
将本地新建的分支与长途分支相相关(在当时分支下输入以下指令)
git branch -u origin/分支名
其间origin/xxx xxx为长途分支名
eg: git branch -u origin/master 本地分支相关长途master分支
或许运用 git branch –set-upstream-to origin/xxx 相同能够相关
检查本地分支与长途分支的映射联系(检查相关效果)
git branch -vv
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
官网文档: git-scm.com/doc
本地克隆长途代码库房
git clone 地址
本地同步全量前史数据 ,克隆一切文件的前史记载
git clone 地址 —depth 1
本地同步默许分支最近n次的commit信息 ,克隆默许分支master最近一次commit
git clone 地址 —depth 1 —branch dev
本地同步指定分支最近n次的commit信息 ,克隆dev分支最近一次commit
第三种方法克隆下来只存在指定的分支,假如想要切换分支,运用下面的指令
git remote set - branches origin 'remote_branch_name'
git fetch
git checkout remote_branch_name
常用git指令(更新中…)
显现一切提交过的用户,按提交次数排序
git shortlog -sn
显现指定文件是什么人在什么时刻修正过
git blame [file]
eg: git blame README.md
Git 中的分支是指向提交的指针 ,是从特定时刻点开端的项目及其更改的快照 。
删去本地分支
git branch -d local_branch_name
切换分支
将远端分支拉取到本地(本地切换到长途分支,存在远端分支,需求在本地)
git checkout -b dev origin/dev
相关长途分支
将本地新建的分支与长途分支相相关(在当时分支下输入以下指令)
git branch -u origin/分支名
其间origin/xxx xxx为长途分支名
eg: git branch -u origin/master 本地分支相关长途master分支
或许运用 git branch –set-upstream-to origin/xxx 相同能够相关
检查本地分支与长途分支的映射联系(检查相关效果)
git branch -vv
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
官网文档: git-scm.com/doc
本地克隆长途代码库房
git clone 地址
本地同步全量前史数据 ,克隆一切文件的前史记载
git clone 地址 —depth 1
本地同步默许分支最近n次的commit信息 ,克隆默许分支master最近一次commit
git clone 地址 —depth 1 —branch dev
本地同步指定分支最近n次的commit信息 ,克隆dev分支最近一次commit
第三种方法克隆下来只存在指定的分支,假如想要切换分支,运用下面的指令
git remote set - branches origin 'remote_branch_name'
git fetch
git checkout remote_branch_name
常用git指令(更新中…)
显现一切提交过的用户,按提交次数排序
git shortlog -sn
显现指定文件是什么人在什么时刻修正过
git blame [file]
eg: git blame README.md
Git 中的分支是指向提交的指针 ,是从特定时刻点开端的项目及其更改的快照 。
删去本地分支
git branch -d local_branch_name
切换分支
将远端分支拉取到本地(本地切换到长途分支,存在远端分支,需求在本地)
git checkout -b dev origin/dev
相关长途分支
将本地新建的分支与长途分支相相关(在当时分支下输入以下指令)
git branch -u origin/分支名
其间origin/xxx xxx为长途分支名
eg: git branch -u origin/master 本地分支相关长途master分支
或许运用 git branch –set-upstream-to origin/xxx 相同能够相关
检查本地分支与长途分支的映射联系(检查相关效果)
git branch -vv
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
官网文档: git-scm.com/doc
本地克隆长途代码库房
git clone 地址
本地同步全量前史数据 ,克隆一切文件的前史记载
git clone 地址 —depth 1
本地同步默许分支最近n次的commit信息 ,克隆默许分支master最近一次commit
git clone 地址 —depth 1 —branch dev
本地同步指定分支最近n次的commit信息 ,克隆dev分支最近一次commit
第三种方法克隆下来只存在指定的分支,假如想要切换分支,运用下面的指令
git remote set - branches origin 'remote_branch_name'
git fetch
git checkout remote_branch_name
常用git指令(更新中…)
显现一切提交过的用户,按提交次数排序
git shortlog -sn
显现指定文件是什么人在什么时刻修正过
git blame [file]
eg: git blame README.md
Git 中的分支是指向提交的指针 ,是从特定时刻点开端的项目及其更改的快照 。
删去本地分支
git branch -d local_branch_name
切换分支
将远端分支拉取到本地(本地切换到长途分支,存在远端分支,需求在本地)
git checkout -b dev origin/dev
相关长途分支
将本地新建的分支与长途分支相相关(在当时分支下输入以下指令)
git branch -u origin/分支名
其间origin/xxx xxx为长途分支名
eg: git branch -u origin/master 本地分支相关长途master分支
或许运用 git branch –set-upstream-to origin/xxx 相同能够相关
检查本地分支与长途分支的映射联系(检查相关效果)
git branch -vv
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
官网文档: git-scm.com/doc
本地克隆长途代码库房
git clone 地址
本地同步全量前史数据 ,克隆一切文件的前史记载
git clone 地址 —depth 1
本地同步默许分支最近n次的commit信息 ,克隆默许分支master最近一次commit
git clone 地址 —depth 1 —branch dev
本地同步指定分支最近n次的commit信息 ,克隆dev分支最近一次commit
第三种方法克隆下来只存在指定的分支,假如想要切换分支,运用下面的指令
git remote set - branches origin 'remote_branch_name'
git fetch
git checkout remote_branch_name
常用git指令(更新中…)
显现一切提交过的用户,按提交次数排序
git shortlog -sn
显现指定文件是什么人在什么时刻修正过
git blame [file]
eg: git blame README.md
Git 中的分支是指向提交的指针 ,是从特定时刻点开端的项目及其更改的快照 。
删去本地分支
git branch -d local_branch_name
切换分支
将远端分支拉取到本地(本地切换到长途分支,存在远端分支,需求在本地)
git checkout -b dev origin/dev
相关长途分支
将本地新建的分支与长途分支相相关(在当时分支下输入以下指令)
git branch -u origin/分支名
其间origin/xxx xxx为长途分支名
eg: git branch -u origin/master 本地分支相关长途master分支
或许运用 git branch –set-upstream-to origin/xxx 相同能够相关
检查本地分支与长途分支的映射联系(检查相关效果)
git branch -vv
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
官网文档: git-scm.com/doc
本地克隆长途代码库房
git clone 地址
本地同步全量前史数据 ,克隆一切文件的前史记载
git clone 地址 —depth 1
本地同步默许分支最近n次的commit信息 ,克隆默许分支master最近一次commit
git clone 地址 —depth 1 —branch dev
本地同步指定分支最近n次的commit信息 ,克隆dev分支最近一次commit
第三种方法克隆下来只存在指定的分支,假如想要切换分支,运用下面的指令
git remote set - branches origin 'remote_branch_name'
git fetch
git checkout remote_branch_name
常用git指令(更新中…)
显现一切提交过的用户,按提交次数排序
git shortlog -sn
显现指定文件是什么人在什么时刻修正过
git blame [file]
eg: git blame README.md
Git 中的分支是指向提交的指针 ,是从特定时刻点开端的项目及其更改的快照 。
删去本地分支
git branch -d local_branch_name
切换分支
将远端分支拉取到本地(本地切换到长途分支,存在远端分支,需求在本地)
git checkout -b dev origin/dev
相关长途分支
将本地新建的分支与长途分支相相关(在当时分支下输入以下指令)
git branch -u origin/分支名
其间origin/xxx xxx为长途分支名
eg: git branch -u origin/master 本地分支相关长途master分支
或许运用 git branch –set-upstream-to origin/xxx 相同能够相关
检查本地分支与长途分支的映射联系(检查相关效果)
git branch -vv
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
官网文档: git-scm.com/doc
本地克隆长途代码库房
git clone 地址
本地同步全量前史数据 ,克隆一切文件的前史记载
git clone 地址 —depth 1
本地同步默许分支最近n次的commit信息 ,克隆默许分支master最近一次commit
git clone 地址 —depth 1 —branch dev
本地同步指定分支最近n次的commit信息 ,克隆dev分支最近一次commit
第三种方法克隆下来只存在指定的分支,假如想要切换分支,运用下面的指令
git remote set - branches origin 'remote_branch_name'
git fetch
git checkout remote_branch_name
常用git指令(更新中…)
显现一切提交过的用户,按提交次数排序
git shortlog -sn
显现指定文件是什么人在什么时刻修正过
git blame [file]
eg: git blame README.md
Git 中的分支是指向提交的指针 ,是从特定时刻点开端的项目及其更改的快照 。
删去本地分支
git branch -d local_branch_name
切换分支
将远端分支拉取到本地(本地切换到长途分支,存在远端分支,需求在本地)
git checkout -b dev origin/dev
相关长途分支
将本地新建的分支与长途分支相相关(在当时分支下输入以下指令)
git branch -u origin/分支名
其间origin/xxx xxx为长途分支名
eg: git branch -u origin/master 本地分支相关长途master分支
或许运用 git branch –set-upstream-to origin/xxx 相同能够相关
检查本地分支与长途分支的映射联系(检查相关效果)
git branch -vv
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
官网文档: git-scm.com/doc
本地克隆长途代码库房
git clone 地址
本地同步全量前史数据 ,克隆一切文件的前史记载
git clone 地址 —depth 1
本地同步默许分支最近n次的commit信息 ,克隆默许分支master最近一次commit
git clone 地址 —depth 1 —branch dev
本地同步指定分支最近n次的commit信息 ,克隆dev分支最近一次commit
第三种方法克隆下来只存在指定的分支,假如想要切换分支,运用下面的指令
git remote set - branches origin 'remote_branch_name'
git fetch
git checkout remote_branch_name
常用git指令(更新中…)
显现一切提交过的用户,按提交次数排序
git shortlog -sn
显现指定文件是什么人在什么时刻修正过
git blame [file]
eg: git blame README.md
Git 中的分支是指向提交的指针 ,是从特定时刻点开端的项目及其更改的快照 。
删去本地分支
git branch -d local_branch_name
切换分支
将远端分支拉取到本地(本地切换到长途分支,存在远端分支,需求在本地)
git checkout -b dev origin/dev
相关长途分支
将本地新建的分支与长途分支相相关(在当时分支下输入以下指令)
git branch -u origin/分支名
其间origin/xxx xxx为长途分支名
eg: git branch -u origin/master 本地分支相关长途master分支
或许运用 git branch –set-upstream-to origin/xxx 相同能够相关
检查本地分支与长途分支的映射联系(检查相关效果)
git branch -vv
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
官网文档: git-scm.com/doc
本地克隆长途代码库房
git clone 地址
本地同步全量前史数据 ,克隆一切文件的前史记载
git clone 地址 —depth 1
本地同步默许分支最近n次的commit信息 ,克隆默许分支master最近一次commit
git clone 地址 —depth 1 —branch dev
本地同步指定分支最近n次的commit信息 ,克隆dev分支最近一次commit
第三种方法克隆下来只存在指定的分支,假如想要切换分支,运用下面的指令
git remote set - branches origin 'remote_branch_name'
git fetch
git checkout remote_branch_name
常用git指令(更新中…)
显现一切提交过的用户,按提交次数排序
git shortlog -sn
显现指定文件是什么人在什么时刻修正过
git blame [file]
eg: git blame README.md
Git 中的分支是指向提交的指针 ,是从特定时刻点开端的项目及其更改的快照 。
删去本地分支
git branch -d local_branch_name
切换分支
将远端分支拉取到本地(本地切换到长途分支,存在远端分支,需求在本地)
git checkout -b dev origin/dev
相关长途分支
将本地新建的分支与长途分支相相关(在当时分支下输入以下指令)
git branch -u origin/分支名
其间origin/xxx xxx为长途分支名
eg: git branch -u origin/master 本地分支相关长途master分支
或许运用 git branch –set-upstream-to origin/xxx 相同能够相关
检查本地分支与长途分支的映射联系(检查相关效果)
git branch -vv
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
官网文档: git-scm.com/doc
本地克隆长途代码库房
git clone 地址
本地同步全量前史数据 ,克隆一切文件的前史记载
git clone 地址 —depth 1
本地同步默许分支最近n次的commit信息 ,克隆默许分支master最近一次commit
git clone 地址 —depth 1 —branch dev
本地同步指定分支最近n次的commit信息 ,克隆dev分支最近一次commit
第三种方法克隆下来只存在指定的分支,假如想要切换分支,运用下面的指令
git remote set - branches origin 'remote_branch_name'
git fetch
git checkout remote_branch_name
常用git指令(更新中…)
显现一切提交过的用户,按提交次数排序
git shortlog -sn
显现指定文件是什么人在什么时刻修正过
git blame [file]
eg: git blame README.md
Git 中的分支是指向提交的指针 ,是从特定时刻点开端的项目及其更改的快照 。
删去本地分支
git branch -d local_branch_name
切换分支
将远端分支拉取到本地(本地切换到长途分支,存在远端分支,需求在本地)
git checkout -b dev origin/dev
相关长途分支
将本地新建的分支与长途分支相相关(在当时分支下输入以下指令)
git branch -u origin/分支名
其间origin/xxx xxx为长途分支名
eg: git branch -u origin/master 本地分支相关长途master分支
或许运用 git branch –set-upstream-to origin/xxx 相同能够相关
检查本地分支与长途分支的映射联系(检查相关效果)
git branch -vv
吊销本地分支与长途分支的联系
git branch --unset-upstream
兼并分支
git checkout master
git pull origin master
git merge dev
git status
git push origin master
本地库房一起相关多个远端库房(gitee, github, gitlab…)
因为Git自身是分布式版别控制体系 ,能够同步到别的一个长途库,当然也能够同步到别的两个长途库。
运用多个长途库时,咱们要留意,git给长途库起的默许称号是origin ,假如有多个长途库,咱们需求用不同的称号 来标识不同的长途库, 详细操作过程如下:
先删去已相关的名为origin的长途库:
git remote rm origin
再相关GitHub的长途库:
git remote add github git@github .com:all - smile/ pc- web.git
留意 : 长途库的称号叫github,不叫origin了。
接着,再相关Gitee的长途库:
git remote add gitee git@gitee.com:hey-u/pc-web.git
相同留意,长途库的称号叫gitee,不叫origin。
检查长途库信息
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)
本地修正推送到远端
git push github master
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
将长途 URL 从 HTTPS 切换到 SSH
翻开Terminal(终端)。
将当时作业目录更改为您的本地库房。
列呈现有长途库房以获取要更改的长途库房的称号。
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git(fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git(push )
运用git remote set-url指令将长途的 URL 从 HTTPS 更改为 SSH。
git remote set -url origin git@ github.com:USERNAME/REPOSITORY.git
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:
git remote -v
origin https://gi thub.com/USERNAME/REPOSITORY.git (fetch)
origin https://gi thub.com/USERNAME/REPOSITORY.git (push )
设置git提交用户信息
这儿牵涉到提交代码的一些数据计算,了解一下会很有协助的,能够看下我的这篇文章:
语雀:github/gitlab/gitee 个人主页无法计算提交记载
后来有次居家作业,跟搭档共用一台虚桌,为了把一些“数据”做的好看些,不得不切换本地的ssh装备。发现gitlab上代码的数据计算收集数据的方法应该不仅有,详细描绘如下:
我给后端项目设置了项目级的git用户装备,后端搭档提交的时分直接提
前端项目提交运用体系级的git用户装备
做完这些之后发现,gitlab上项目里的提交信息计算的是正确的(猜想便是获得commit信息罢了),在profile主页确没有计算到提交记载(测验 发现应该是跟推送长途库房时运用得ssh密钥有联系),详细的设置请看常用的SSH,你了解多少?
怎么检查”.gitconfig”文件
在”Git Bash”指令行东西中输入“cd && ls -a”便能够看到如下信息
再经过“view .gitconfig”指令翻开.gitconfig文件,即可检查该装备文件内容:
git log 不能正确显现中英文
git config --global core.quotepath false
git config --global core.pager more
tag 标签
git tag -a <tagname:v1.0.0> -m "标签描绘"
git push origin v1.0.0
git tag -a <tagname:v1.0.0> -m "标签描绘"
eg: git tag -a v1.0.0 -m "test"
git push github v1.0.0
git push gitee v1.0.0
git tag
git tag -d 标签名
eg:git tag -d v3.1.0
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 commit 信息的标准设置
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密钥对
右键 git bash
ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096一路回车
复制公钥到剪切板
cat ~/.ssh/id_rsa.pub | clip
3.登录gitlap装备公钥
vscose装备git bash
vscode装备bash
右键git bash here
履行指令: where bash : 获取bash应用程序途径
vs中翻开设置,查找 shell,挑选Automation Shell: Windows, 在setting.json中修正
增加装备项
“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` 文件。
.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
这时分在履行ssh-keygen -o -t rsa -C "your.email@example.com" -b 4096指令的时分就不能默许回车了
能够修正生成key的文件名,默许文件名是id_rsa,生成多个不同文件命名的key就能够增加运用了。
不同的代码库房渠道能够选用设置 ssh config的方法,能够参阅常用的SSH,你了解多少?自己测验一下
增加ssh之后 git clone xxx还不可
测验一:
装备ssh config
Host gitcode.net
HostName gitcode.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
再次测验衔接
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提交信息
状况一、修正最终一次的提交信息
git commit --amend
然后再vim修正器里边(详细以什么方法翻开要看git bash的装备,能够装备成 notepad++, 或许运用 Git Extensions)修正保存即可
git push
状况二、修正指定commit的提交信息
git log 检查信息,获取到commmit-id
git rebase -i 6579ghjk^
变基到指定的commit-id版别, 并进入到一个可修正的界面。在修正区顶部,会列出这次 rebase 操作所触及的一切 commit 提交记载的摘要,它们每一行默许都是以 pick 最初的。找到你想要修正的那个 commit,将行首的 pick 关键字修正为 edit。然后保存并退出。这么做能够在履行和指定 commit 有关的 rebase 操作时暂停下来让咱们对该 commit 的信息进行修正
git commit –amend 修正commit信息
履行 git rebase –continue 指令完结剩下的 rebase 操作。
假如需求修正多个提交记载的信息,则重复履行 2、3过程,直到呈现以下输出:
git rebase --continue
Successfully rebased and updated refs/heads/develop
到这儿现已完结了变基操作的一切节点,
履行 git log 指令检查咱们方才的修正状况,承认已修正的内容和预期共同。
git push
Git本地有四个作业区域
作业目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git库房(Remote Directory)。文件在这四个区域之间的转化联系如下
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规划原理到事务体系规划与开发
我是 甜点cc ☭
微信大众号:【看见另一种或许】
专心前端开发,也喜爱专研各种跟本职作业联系不大的技能,技能、产品爱好广泛且稠密。本号首要致力于共享个人经验总结,期望能够给一小部分人一些细小协助。
本文正在参与「金石方案 . 分割6万现金大奖」
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
免费下载或者VIP会员资源能否直接商用?
本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
提示下载完但解压或打开不了?
最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。 若排除这种情况,可在对应资源底部留言,或联络我们。
找不到素材资源介绍文章里的示例图片?
对于会员专享、整站源码、程序插件、网站模板、网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
付款后无法显示下载地址或者无法查看内容?
如果您已经成功付款但是网站没有弹出成功提示,请联系站长提供付款信息为您处理
购买该资源后,可以退款吗?
源码素材属于虚拟商品,具有可复制性,可传播性,一旦授予,不接受任何形式的退款、换货要求。请您在购买获取之前确认好 是您所需要的资源