学习资料
一、本地分支操作
查看所有分支
git branch -a //常看所有分支
切换分支
git checkout name(分支名称) //切换到分支name
git checkout -b 本地分支名 origin/远程分支名 // 切换远程分支
新建分支
git checkout x //切换到x这个分支,
git checkout -b s //然后以x这个分支新建一个s分支
git log // 查看所有的commitID
git checkout -b newbranch commintId // 基于某个commit新建分支
删除分支
git checkout master
git branch -d a //第一步删除本地分支a
git push origin --delete a //第二步删除远程分支a
本地分支更新远程代码
git checkout x
git add .
git commit -m "x的代码"
git push origin
git pull origin
本地分支dev合并到mater上
git checkout dev
git add .
git commit -m "合并"
git git push origin
git checkout master
git pull
git merge dev
git push origin //本地x分支合并到master上
多个commitId在合并的时候变成一个commitId
# 将远程仓库adminTemplate上的master分支合并到当前项目的分支,
# merge --squash 的意思是:将远程仓库adminTemplate/master分支的多个commitId记录合并成一个commitId,然后再合并到当前项目的分支上。
# --allow-unrelated-histories 的意思是允许不同的项目进行合并
git merge --squash adminTemplate/master --allow-unrelated-histories
本地分支修改切换其他分支但不想commit
// 当前分支a
git add .
git stash // 暂存
git checkout master // 切换到master分支
git checkout a // 切回
git stash list // 查看暂存了多少个
git stash pop // 将最近暂存的出栈
二、代码提交 步骤
git pull origin 分支名
git add .
git commit -m "message"
git push origin 分支名
message规范信息介绍
使用husky添加校验,提交代码commit必须形如 git commit -m "feat: xxx"
| type | type |
|---|---|
| feat | 新增功能 |
| fix | 修复bug |
| docs | 修改文档 |
| refactor | 代码重构,未新增任何功能和修复任何bug |
| build | 改变构建流程,新增依赖库、工具等(例如webpack修改) |
| style | 仅仅修改了空格、缩进等,不改变代码逻辑 |
| perf | 改善性能和体现的修改 |
| chore | 非src和test的修改 |
| test | 测试用例的修改 |
| revert | 回滚到上一个版本 |
| ci | 自动化流程配置修改 |
三、合并分支到master上 步骤
git checkout master
git merge 分支名
代码 提交
四、打标签
查看标签
git tag
创建标签
git tag -a v1.0 -m "创建标签的备注信息"
五、撤销操作
- 未进行任何提交,即没有使用add命令,文件更改在工作区。
git checkout -- filename // filename 对应进行操作的文件名
2. 已用git add 命令提交,即文件更改在暂存区
git reset HEAD filename // 舍弃filename文件的更改
git reset --hard HEAD // 舍弃所有文件的更改
3. 已用git add 和git commit 提交,即文件更改在分支
git reset --hard HEAD^ // 完全舍弃最后一次更改
git reset --soft HEAD^ // 舍弃更改至缓存区,即回到第2种情况
git reset HEAD^ // 舍弃更改至工作区,即回到第1种情况
4. 需要删除文件
git rm filename //删除所有
git rm --cached filename //仅在工作区保留
5. 本地分支上面,有A分支和B分支,现在A分支merge了B分支,现在后悔想撤回了。
第一步:在远程仓库上查看A分支最新的commit记录
第二步:本地切换到A分支
git checkout A
第三步:查找对应的A分支最新的commit记录,确认为远程A分支最新的commitId,
git reflog
第四步:撤回
git reset --hard 448c9fb(从git reflog获取)
6. 远程分支需要回退到固定的commit,舍弃之前的提交
# 切换到对应分支
git checkout 分支
# 获取到要回退的commit id
git log
# 回退
git reset --hard commitId
# 强制提交
git push --force
六、服务器重置后本地git连接服务器
ssh-keygen -R 106.xx.xxx.xxx
七、本地git连接服务器
ssh root@106.xx.xxx.xxx
root:为服务器账户名
八、高效的在github上查找项目
in:name 爬虫 //搜索名字中带有"爬虫"的
in:readme 爬虫 //搜索readme中带有"爬虫"的
in:description 爬虫 //搜索描述中带有"爬虫"的
stars:>1000 //搜索stars>1000的
forks:>1000 //搜索forks>1000的
pushed:>2019-09-01 //搜索最近更新于2019年9月1日之后的
language:Python //搜索Python的项目
九、git上次出现端口被占用、拒绝的错误。
例如:Failed to connect to 127.0.0.1 port 1081: Connection refused
解决方法:打开.gitconfig文件,删除里面的proxy字段即可。
参考文章:www.jianshu.com/p/13099813f…
十、git push每次都需要登录账号密码
解决方法:jingyan.baidu.com/article/4b0…
十一、github网址打开很慢
十二、创建公司git和个人git
1. 生成多个不同的sshkey秘钥
如果在创建的过程中,对密钥的读取设置了密码,则后面进行代码推拉操作的时候,都需要当时设置的密码,建议直接回车,不设置。
生成新的tc_pub公钥与私钥
#mac
ssh-keygen -t rsa -C "公司用的邮箱@xxx.com" -f ~/.ssh/inke_rsa
#window
在c:\users\你当前的用户名 打开终端
如果没有.ssh文件夹,则在这个路径下创建,进入当前的.ssh文件夹
执行如下终端命令
ssh-keygen -t rsa -C "公司的邮箱@xxx.com" -f ./git_rsa
查看
ls ~/.ssh
记得根据自己创建的一对钥匙给gitlab添加公钥
cat ~/.ssh/id_rsa.pub
copy 内容到git上的ssh里面,如:
2. 在.ssh目录下新建一个config(无后缀文件)
这个文件的使用就是,当你clone远程仓库的时候,git会去找查找这个文件,根据这个文件的内容,将私钥与github上配置的公钥进行匹配,如果匹配成功,则允许你进行代码clone或者提交等操作。
// window系统操作(.ssh目录一般在C:/Users/你当前的用户/.ssh目录)
# 个人account
# 解释说明:
# Host,HostName gitlab或者github上的域名
# User 提交commit记录时,你的名称
# IdentityFile 进行gitlab链接时的密钥(密码)
Host github.com
HostName github.com
User git_phxxhp
IdentityFile C:/Users/你的用户名称/.ssh/git_rsa
IdentitiesOnly yes
# 公司account
Host xx.xxx.xx
HostName xx.xxx.xx
User inke_phxxhp
IdentityFile C:/Users/Administrator/.ssh/inke_rsa
IdentitiesOnly yes
// max系统操作
cd ~/.ssh
touch config
vim config
# 个人account
Host github.com
HostName github.com
User git_phxxhp
IdentityFile ~/.ssh/id_rsa_github
# 公司account
Host code.inke.cn
HostName code.inke.cn
User inke_phxxhp
IdentityFile ~/.ssh/id_rsa
3. 测试链接
这是尝试用config文件去访问git远程仓库,访问的逻辑与上面一致。
ssh -T git@github.com
ssh -T git@公司访问gitlab的域名
4. 设置全局username和email
设置公司的git为全局的username和email
git config --global user.name "inke_phxxhp"
git config --global user.email "xiaoxu@inke.cn"
设置这些配置项有以下作用:
- 作者信息: 在 Git 提交中,每次提交都会记录作者的信息,其中包括作者的姓名和邮箱。设置
user.email项就是为了在每次提交中标识作者的邮箱。 - 身份验证: 有些 Git 服务器在进行操作时需要进行身份验证,而用户的邮箱通常是其中的一部分。通过设置用户邮箱,你可以确保你的 Git 操作被正确归属到你的身份。
5、clone个人git项目
进入工程目录后,需要设置个人的username和email,然后再进行其他操作。
git config --list // 查看当前电脑的git所有账户信息
git config user.name "git_xiaoxu"
git config user.email "xiaoxu@qq.com"
6、检验公司git与个人git是否成功
clone公司项目,分别进入该公司项目目录和个人项目目录后查看用户信息
git config user.name
公司项目的user.name为:inke_xiaoxu
个人项目的user.name为:git_xiaoxu
十三、对比两个commit
git log
git diff commit1 commit2
十四、一个项目多添加一个远程仓库
如果远程仓库是别的项目,也就是密钥不对,则需要额外创建一个,参考十二、创建公司git与个人git
回到项目
git remote add bitbucket gitUrl(远程仓库的url地址)
查看是否添加成功
git remote -v
拉与推另外一个远程仓库的代码
git pull bitbucket # 拉
git push bitbucket # 推
十五、将a分支中的某个commit合并到b分支
git checkout a
git log
# 选择a分支里面要合并到b分支的commit id: acbd 复制
git checkout b
git cherry-pick abcd
git push