问题1,Permission denied (publickey)解决方法
分析:
权限问题,远程主机禁用了ssh密码登录权限
本地访问远程主机的公钥没有添加或者被取消(无法认证)
一、本地生成一对秘钥,私钥~/.ssh/id_rsa和公钥~/.ssh/id_rsa.pub。其中公钥~/.ssh/id_rsa.pub应该配置保存到远程服务器端已认证的秘钥文件内~/.ssh/authorized_keys
二、如果是Git 2.33.x 或以上版本,使用以前的配置方式的话,对远程仓库的何操作,都会出现任提示 “Permission denied (publickey)”。
原因: Git 2.33.0 版本后升级使用 OpenSSH 8.8,默认禁用 SSH-RSA 加密算法。
解决方案1:
开启 SSH-RSA 支持(不推荐)
进入到 .ssh 文件夹下,修改 config 文件,增加以下内容:
Host github.com
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa
将 Host 行中的域名换成你个人或公司的 Git 仓库域名即可。
解决方案2:
更换 ECC-ED25519 加密 (建议的解决方式)
打开 git bash,生成新密钥:ssh-keygen -t ed25519 -C "@.com.cn"
回车确认后会自动在 .ssh 文件夹下新生成 "id_ed25519" 和 "id_ed25519.pub" 两个文件。
再将 "id_ed25519.pub" 文件当中的公钥内容绑定到你的在线 Git 服务账户当中即可。
Github 操作方式: Setting -> Access -> SSH and GPG Keys -> New SSH key
问题2:server certificate verification failed.
解决方式:git config --global --add http.sslVerify false
问题3:出现can not merge原因:当git提交多次时,后提交的代码先合入,先提交的代码会出现can not merge问题,下面是解决方法。
1、先git stash 此命令是备份当前的工作区,防止当前工程中已修改的代码出现丢失,同时将工作区中的代码保存到git栈中。
2、再git pull
3、然后git stash pop 此命令是从git栈中读取命令1保存的内容,恢复工作区。
最常用的 git 命令有:
add 添加文件内容至索引
bisect 通过二分查找定位引入 bug 的变更
branch 列出、创建或删除分支
checkout 检出一个分支或路径到工作区
clone 克隆一个仓库到一个新目录
commit 记录变更到仓库
diff 显示提交之间、提交和工作区之间等的差异
fetch 从另外一个仓库下载对象和引用
grep 输出和模式匹配的行
init 创建一个空的 Git 仓库或重新初始化一个已存在的仓库
log 显示提交日志
merge 合并两个或更多开发历史
mv 移动或重命名一个文件、目录或符号链接
pull 获取并整合另外的仓库或一个本地分支
push 更新远程引用和相关的对象
rebase 本地提交转移至更新后的上游分支中
reset 重置当前 HEAD 到指定状态
rm 从工作区和索引中删除文件
show 显示各种类型的对象
status 显示工作区状态
tag 创建、列出、删除或校验一个 GPG 签名的标签对象
初次运行Git前的配置
git config
用户信息
git config --global user.email
文本编辑器
git config --global core.editor vim
所有/当前git库:
git config --global core.fileMode false
git config core.fileMode false
检查配置信息
git config --list
git pull 拉取远程更新,可以指定分支:git pull origin base
git checkout base切换分支
git push origin base 提交到远程
git commit -m "描述"提交信息
git commit --amend 修补最近提交ctrl+O、ctrl+M+D
git rebase -i <commit-id> 修补历史提交
git rm --cached info.img 撤回提交的文件
git rebase -i <commit-id> ^
git clean -fd 清除非跟踪文件(未加入版本库)
git stash 切换分之前暂存--> git list查看 git stash pop 恢复
git log --stat 查看日志及其统计
git diff HEAD^ HEAD 上上次提交与最近一次提交间的差异
git diff topic master 分支的差异:topic分支与master
git log --oneline | grep ttt 单行显示过滤“ttt”的提交
把已经commit的内容提交到另一个分支,就是对已经存在的commit进行apply (可以理解为再次提交)git文档描述:Apply the changes introduced by some existing commits
git cherry-pick <commit-id>
git cherry-pick --abort
git cherry-pick --continue
git commit --allow-empty 否则,请使用命令 'git reset'(慎用,特别是搭配--hard)
冲突处理,保留pick下来的
git reset --hard HEAD/commit_ID 清除未成功的cherry-pick缓存
git checkout device/hisilicon/Hi3798MV300/BoardConfig.mk --theirs 整个文件使用新合入的
git checkout device/hisilicon/Hi3798MV300/BoardConfig.mk --ours 整个文件使用原来的
生成补丁:
git format-patch -s <commit-id>
打入补丁:
git am patch_name.patch 是git命令生成的patch才可用这命令
patch -p1 < patch_name.patch
合作开发中提交之前记得gitpull
git add 加到暂存区以待commmit
git diff --cached 查看添加到暂存区文件的修改详情
git reset (+文件)从暂存区移除所有没有提交修改
查看远程仓库
git remote -v
添加远程仓库
git remote add <shortname> <url>
从远程仓库抓取和拉取
git fetch <repo>
git pull <repo>
推送到远程仓库
git push origin master
查看远程仓库
git branch -a
git remote show origin
远程仓库的移除与重命名
git remote rm <repo>
git remote rename <old> <new>
删除远程分支(慎用)
git push origin --delete cherry-pick-f9efd0d9
.gitignore忽略文件格式规范:
所有空行或以#开头的行都会被忽略
可以使用标准glob模式匹配
匹配模式以( /)开头避免递归
匹配模式以(/)结尾匹配目录
忽略指定模式之外的文件,加( ! )取反。https://blog.csdn.net/qq_43651168/article/details/131268703
帮助命令:
git help <verb> 如:git help branch
man git <verb>