一.Git使用方法
1. git基本操作
git clone 更改地址
git add . 本地修改提交到本地的缓存区
git commit -m 'project init' 缓存区代码提交到本地仓库,同时初始化操作。
git push 本地代码推送到线上去
git --version 检测git是否安装成功
git pull 拉取分支
2. 分支操作
git remote –v 查看远端地址或者查看配置
git branch 查看当前本地分支
git branch -r 查看远程分支
git branch -a 查看所有分支
删除本地分支 git branch -d (分支名)
删除远程分支 git push origin -d (分支名)
重命名分支 git branch -m (老分支名) (新分支名)
切换分支 git checkout (分支名)
创建+切换分支 git checkout -b(分支名) [本地创建分支]
创建+从远程拉取 git checkout -b (develop) origin/(develop)
[本地分支上传到云端] git push origin (分支名)
合并分支 git merge (分支名)
线上无此分支,本地仓库推送到线上 git push -u origin (分支名)
远程分支已经删除修剪远程分支 git remote prune origin
3. 当拉取分支报错时
git branch --set-upstream-to=origin/develop develop 未关联远程分支
git stash ------------------本地代码存储下来
git pull ------------------拉取最新代码
git stash pop stash@{0} 还原备份暂存的代码 (stash@{0}是你刚刚备份存储的标记)
git stash apply 还原备份并且不会从堆栈中删除
然后
git stash save "save message" : 执行存储时,添加备注,方便查找
git add xxx文件
然后git commit -m "fix conflict"
然后git push origin 对应的分支即可
解决完冲突后,你发现不需要那个stash后,你可以直接 git stash clear(注意这个是将所有的stash都清空)
或者:git stash drop stash@{0} 删除指定的stash即可
4. 当推送分支报错时
git reset --soft HEAD^ 撤销commit记录
git pull/git push --set-upstream origin master(master可以根据你的需要自定义,就是当前分支在远程分支对应的名称)
git push origin feature-test:feature-test
git push -u origin master (推送到master分支)
git push --rebase origin master (代码合并的意思注:pull=fetch+merge)
5. 回退已提交的commit
1.git log 查看commit版本记录等
2.git reset --hard (commit-id号)
即刻回到你commit 的版本了
git reset --hard
6. commit 备注格式
feat:修改/增加新特性/功能
fix:修复bug
chore: 非功能性修改,.gitignore/辅助口
style:代码格式,如逗号缩进空格等
test:添加/修改现有的测试
perf:改进性能的变更
refactor:代码重构变更
docs:文档相关变更
revert:回退
build:打包
7. git cherry-pick用法
你需要另一个分支的所有代码变动,那么就采用合并(git merge)
你只需要部分代码变动(某几个提交),这时可以采用 Cherry pick
- 先在A分支找到这次提交的commit 号
- 再切换到B分支使用git cherry-pick 'f038d7ffb1685af7d4f870ad0b798670b6f760e8'
当执行完git cherry-pick以后会生成一个新的提交,这个新的提交的hash值和原来的不同,但标志名称一样。
合并分支
1、主干合并分支 在主干上合并分支
branch (master)git merge branch
提交合并后的代码
(master)git commit -m ‘合并备注’
将代码推送到远程仓库
(master)git push
2、分支合并主干 在分支上合并主干
(branch)git merge master --squash
提交合并后的代码
(branch)git commit -m ‘合并备注’
将代码推送到远程仓库
(branch)git push
3、取消上次merge git merge --abort ————————————————
git merge命令只能合并本地分支,无法直接合并远程分支,因此在合并之前需在分支上使用git pull命令获取最新代码。
- 1、主干合并分支 1>进入分支,更新分支代码 (branch)git pull; 2>切换主干 (branch)git checkout master; 3>在主干上合并分支branch (master)git merge branch --squash 4>提交合并后的代码 (master)git commit -m ‘合并备注’ 5>将代码推送到远程仓库 (master)git push
- 2、分支合并主干 进入主干,更新主干代码 (master)git pull; 切换分支 (master)git checkout branch; 在分支上合并主干 (branch)git merge master --squash 提交合并后的代码 (branch)git commit -m ‘合并备注’ 将代码推送到远程仓库 (branch)git push ————————————————
git rebase
webpack打包代码:
npx webpack ./src/main.js -o ./dist/bundle.js --mode development
web快捷键
整体缩进 ctrl+[ 或者ctrl+]
二.项目开发步骤
-
下载nodejs LTS版本 更稳定 node -v npm -v 查看版本
-
码云创建项目
-
git安装
-
本地和码云进行关联
- ssh公钥(使用git bash执行命令 码云有教程)
- 本地生成
- 查看命令 (查看公钥)
- 复制到码云进行关联(为了不需要密码进行关联)
- 克隆下载按钮,复制SSH地址
- 切换到项目文件夹
- git clone (SSH地址)
-
创建Vue项目
- 安装vue-cli脚手架 (npm install -g @vue/cli) 查询命令(vue -V)
- 命令行里创建 (vue create hello-world)或者(vue init webpack hello-world)
- 退出(Ctrl+c 关闭)
-
添加到线上仓库
- git add . (增加到缓存区)
- git commit -m 'hello world' (缓存区代码提交到本地仓库,同时初始化操作)
- git push (本地代码推送到线上去)
7.项目分支合并
- git checkout master (切换到master分支)
- git merge origin/index-swiper (把新增内容合并到本地master分支)
- git push (推送到线上)
常见命令
1.git init 初始化项目
2.git status 展示所有文件状态
3.git add . 所有文件写入缓存区,这个“ . ”的位置不能和add挨着,要有一个空格,不然会报错
4.git commit -m "这里是写你提交了什么东西的” 这个命令将缓存区内容添加到仓库中
5.git remote add origin gitee.com/ ****** /* ***** .git 绑定码云
6.git push origin master 将本地仓库的代码提交到码云
7.git pull --rebase origin master 同步
8.git diff 查看修改了什么,按q退出
9.git config user.name 查看当前git用户名
10.git config user.email 查看当前用户邮箱
11.git config --global user.name "xxxxxxxx" 切换用户名
12.git config --global user.email "xxxxxxxx" 切换邮箱(当发现git提交代码无贡献时,进入git的多邮箱管理,复制提交邮箱设置的邮箱设置即可)
13.git remote -v 查看绑定
14.git remote remove origin 解绑
15.git config --global --replace-all user.name "输入你的用户名"
16.git config --list 查看配置
拉取远程所有分支
git branch -r | grep -v '->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done
git fetch --all
git pull --all
三.vue-cli创建项目很慢问题
安装vue-cli新版本4.4.4,执行vue create xxx,半天都创建不成功,网上搜了好多解决方案,然而并没有解决我的问题。经过一番尝试,解决了自己的问题,做下记录: 默认npm镜像我是使用的淘宝的,设置成npm的就好了
修改成官方命令:
npm config set registry https://registry.npmjs.org
踩过坑: 修改.vuerc文件中 "useTaobaoRegistry"属性,我本地默认是false,后来改成true,没什么作用。来回修改了好几遍没效果,后来查看npm的镜像配置发现修改.vuerc文件中 "useTaobaoRegistry"属性,npm的镜像并没有修改。
查看镜像源:
可以通过npm config get registry查看自己npm的镜像源
修改成淘宝镜像命令:
npm config set registry registry.npm.taobao.org
四. github首次绑定ssh
地址(blog.csdn.net/u013778905/…)
一、设置git的user name和email
如果你是第一次使用,或者还没有配置过的话需要操作一下命令,自行替换相应字段。
git config --global user.name "humhu"
git config --global user.email "humhu@cisco.com"
说明:git config --list 查看当前Git环境所有配置,还可以配置一些命令别名之类的。
二、检查是否存在SSH Key
cd ~/.ssh
ls
或者
ll
//看是否存在 id_rsa 和 id_rsa.pub文件,如果存在,说明已经有SSH Key
如果没有SSH Key,则需要先生成一下
ssh-keygen -t rsa -C "xiangshuo1992@gmail.com"
执行之后继续执行以下命令来获取SSH Key
cd ~/.ssh ls 或者 ll //看是否存在 id_rsa 和 id_rsa.pub文件,如果存在,说明已经有SSH Key
三、获取SSH Key
cat id_rsa.pub
//拷贝秘钥 ssh-rsa开头
四、GitHub添加SSH Key
GitHub点击用户头像,选择setting
新建一个SSH Key
取个名字,把之前拷贝的秘钥复制进去,添加就好啦。
五、验证和修改 测试是否成功配置SSH Key
ssh -T git@github.com //运行结果出现类似如下
ssh -T git@github.com
//运行结果出现类似如下
Hi xiangshuo1992! You've successfully authenticated, but GitHub does not provide shell access.
之前已经是https的链接,现在想要用SSH提交怎么办? 直接修改项目目录下 .git文件夹下的config文件,将地址修改一下就好了。
git地址获取可以看如下图切换。
五.配置同时使用 Gitlab、Github、Gitee(码云) 共存的开发环境
首先确认已安装Git,可以通过 git –version 命令可以查看当前安装的版本。
Mac OSX 中都已经安装了Git。但是,Git的版本未必是最新的。
可以通过命令 git clone https://github.com/git/git 进行更新
Git共有三个级别的config文件,分别是system、global和local。
在当前环境中,分别对应
%GitPath%\mingw64\etc\gitconfig文件 $home.gitconfig文件 %RepoPath%.git\config文件
其中%GitPath%为Git的安装路径,%RepoPath%为某仓库的本地路径。
所以 system 配置整个系统只有一个,global 配置每个账户只有一个,而 local 配置和git仓库的数目相同,并且只有在仓库目录才能看到该配置。
大致思路,建立两个密钥,不同账号配置不同的密钥,不同仓库配置不同密钥。
1. 清除 git 的全局设置(针对已安装 git)
新安装 git 跳过。
若之前对 git 设置过全局的 user.name 和 user.email。 类似 (用 git config --global --list 进行查看你是否设置)
$ git config --global user.name "你的名字"
$ git config --global user.email "你的邮箱"
必须删除该设置
$ git config --global --unset user.name "你的名字"
$ git config --global --unset user.email "你的邮箱"
2. 生成新的 SSH keys
1)GitHub 的钥匙
指定文件路径,方便后面操作:~/.ssh/id_rsa.gitlab
ssh-keygen -t rsa -f ~/.ssh/id_rsa.github -C "lx@qq.com"
直接回车3下,什么也不要输入,就是默认没有密码。
注意 github 和 gitlab 的文件名是不同的。
2)GitLab 的钥匙
ssh-keygen -t rsa -f ~/.ssh/id_rsa.gitlab -C "lx@vip.qq.com"
2)Gitee 的钥匙
ssh-keygen -t rsa -f ~/.ssh/id_rsa.gitee -C "lx@vip.qq.com"
3)完成后会在~/.ssh / 目录下生成以下文件
- id_rsa.github
- id_rsa.github.pub
- id_rsa.gitlab
- id_rsa.gitlab.pub
3.添加识别 SSH keys 新的私钥
亲测Mac下,新增一个 id_rsa.gitee,没加进去 也识别到了。 所以此步骤可忽略,如有问题删除所有密钥 重新按步骤操作一遍。
默认只读取 id_rsa,为了让 SSH 识别新的私钥,需要将新的私钥加入到 SSH agent 中
$ ssh-agent bash
$ ssh-add ~/.ssh/id_rsa.github
$ ssh-add ~/.ssh/id_rsa.gitlab
$ ssh-add ~/.ssh/id_rsa.gitee
4. 多账号必须配置 config 文件(重点)
若无 config 文件,则需创建 config 文件
创建config文件
$ touch ~/.ssh/config
config 里需要填的内容
亲测可以不缩进,所以方便看,建议缩进。
最简配置
Host github.com
HostName github.com
IdentityFile ~/.ssh/id_rsa.github
完整配置
#Default gitHub user Self
Host github.com
HostName github.com
User git #默认就是git,可以不写
IdentityFile ~/.ssh/id_rsa.github
#Add gitLab user
Host git@gitlab.com
HostName gitlab.com
User git
IdentityFile ~/.ssh/id_rsa.gitlab
# gitee
Host gitee.com
Port 22
HostName gitee.com
User git
IdentityFile ~/.ssh/id_rsa.gitee
# 其他自己搭建的
Host git@git.startdt.net
Port 22
HostName http://git.startdt.net
User git
IdentityFile ~/.ssh/lab_rsa.startdt
下面对上述配置文件中使用到的配置字段信息进行简单解释:
- Host 它涵盖了下面一个段的配置,我们可以通过他来替代将要连接的服务器地址。 这里可以使用任意字段或通配符。 当ssh的时候如果服务器地址能匹配上这里Host指定的值,则Host下面指定的HostName将被作为最终的服务器地址使用,并且将使用该Host字段下面配置的所有自定义配置来覆盖默认的/etc/ssh/ssh_config配置信息。
- Port 自定义的端口。默认为22,可不配置
- User 自定义的用户名,默认为git,可不配置
- HostName 真正连接的服务器地址
- PreferredAuthentications 指定优先使用哪种方式验证,支持密码和秘钥验证方式
- IdentityFile 指定本次连接使用的密钥文件
5.在 github 和 gitlab 网站添加 ssh
Github
Github 添加SSH公钥
过程如下:
- 登录 Github
- 点击右上方的头像,点击
settings - 选择
SSH key - 点击
Add SSH key
在出现的界面中填写 SSH key 的名称,填一个你自己喜欢的名称即可。 将上面拷贝的~/.ssh/id_rsa.xxx.pub文件内容粘帖到 key 一栏,在点击 “add key” 按钮就可以了。
添加过程 github 会提示你输入一次你的 github 密码 ,确认后即添加完毕。
Gitlab
Gitlab 添加SSH公钥
- 登录 Gitlab
- 点击右上方的头像,点击
settings - 后续步骤如 Github
Gitee / 码云
码云 添加SSH公钥
- 登录 Gitee
- 点击右上方的头像,点击
设置 - 后续步骤如 Github
添加过程 码云 会提示你输入一次你的 Gitee 密码 ,确认后即添加完毕。
6.测试是否连接成功
由于每个托管商的仓库都有唯一的后缀,比如 Github 的是 git@github.com:*。
所以可以这样测试: ssh -T git@github.com
而 gitlab 的可以这样测试: ssh -T git@gitlab.corp.xyz.com 如果能看到一些 Welcome 信息,说明就是 OK 的了
- ssh -T git@github.com
- ssh -T git@gitlab.com
- ssh -T git@gitee.com
$ ssh -T git@github.com
Warning: Permanently added the RSA host key for IP address '13.250.177.223' to the list of known hosts.
Hi dragon! You've successfully authenticated, but GitHub does not provide shell access.
$ ssh -T git@gitlab.com
The authenticity of host 'gitlab.com (35.231.145.151)' can't be established.
ECDSA key fingerprint is SHA256:HbW3g8zUjNSksFbqTiUWPWg2Bq1x8xdGUrliXFzSn.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'gitlab.com,35.231.145.151' (ECDSA) to the list of known hosts.
Welcome to GitLab, @dragon!
$ ssh -T git@gitee.com
The authenticity of host 'gitee.com (116.211.167.14)' can't be established.
ECDSA key fingerprint is SHA256:FQGC9Kn/eye1W8icdBgrp+KkGYoFgbVr17bmjeyc.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'gitee.com,116.211.167.14' (ECDSA) to the list of known hosts.
Hi 我是x! You've successfully authenticated, but GITEE.COM does not provide shell access.
结果如果出现这个就代表成功:
- GitHub -> successfully
- GitLab -> Welcome to GitLab
- Gitee -> successfully
测试 clone 项目
$ git clone git@gitlab.com:d-d-u/java-xxx.git
Cloning into 'java-basic'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.
7.操作过程出现的问题/报错
tilde_expand_filename: No such user
检查是否成功的时候,报错:tilde_expand_filename: No such user .
$ ssh -T git@github.com
tilde_expand_filename: No such user .
解决方法:
此问题是因为写错了文件路径 或者 大小写没写对,删除重新配置,或者复制我的改好粘贴进去
六. 本地项目直接和线上新建仓库链接起来
-
当线上仓库建立完成后再操作下面的行为
1、创建本地仓库
在项目目录下,打开git,初始化本地仓库
git init
2、将本地仓库与远程仓库相关联、
git remote add origin gitee.com/wangshiting…
这里的地址就是第一步中远程库的地址
3、将本地项目push到远程库
push之前先pull,但是因为这是两个不同的项目,直接pull会报错
refusing to merge unrelated histories
所以需要这样写
git pull origin master --allow-unrelated-histories
然后push
git add .
git commit -m "2021"
git push -u origin master
-u 只需要第一次加,作用是将本地仓库与远程仓库相关联起来
成功了,快到码云看看
还有一种就是不用pull,直接强制覆盖线上仓库
git push -f origin master