Git 常用指令与问题解决方法

问题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>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值