github操作, 解决坑点的总结(持续更新...)

文章目录

  • 本地新建一个仓库要push到github上
  • git pull拒绝合并无关历史
  • git pull: 当前分之没有跟踪信息
  • 想要统计github仓库代码
  • 每次git clone过慢
  • 每次提交都要输用户名和密码
  • git 的撤销操作
    • commit 了不需要 commit 的文件, 还没有进行 push, 可以进行撤销
    • 进行了一个错误push, 希望进行版本回退
  • git的分支管理
  • 由于没有公钥,无法验证下列签名
  • 删除远程仓库文件


本地新建一个仓库要push到github上

  1. github上创建一个同名空仓库
  2. 在本地仓库中执行 :
$: git init
$: git add
$: git commit
$: git remote add origin "github仓库地址"
$: git push -u origin master

git pull拒绝合并无关历史

执行 git pull 报错:

fatal: refusing to merge unrelated histories  // 拒绝合并无关历史

执行 :

git pull origin master --allow-unrelated-histories 
//更新:温馨提示,暴力手法,我记得这个命令应该是和线上保持一致

git pull: 当前分之没有跟踪信息

  1. 可以指定为: git pull origin master
  2. 或者可以设置它, 使你的本地主分之跟踪 github 主分支作为上游:
git branch --set-upstream-to=origin/master master
git pull

想要统计github仓库代码

  1. 查看github仓库代码量 :
    在本地仓库中运行: git log --author="username" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' -

username为你的用户名

  1. 统计每个人增删行数
    git log --format='%aN' | sort -u | while read name; do echo -en "$name\t"; git log --author="$name" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' -; done

  2. 查看仓库提交者排名前五的人
    git log --pretty='%aN' | sort | uniq -c | sort -k1 -n -r | head -n 5

  3. 添加或修改的代码行数:
    git log --stat|perl -ne 'END { print $c } $c += $1 if /(\d+) insertions/'

每次git clone过慢

加参数--depth=1,

$: github clone --depth=1 仓库地址

只拉取最近一次的 commit

每次提交都要输用户名和密码

原因是, clone 时为 HTTPS 方式, 更改 clone 方式为 SSH

$: git remote -v  //查看远程连接的方式
$: git remote rm origin //删除原先HTTPS的连接方式
$: git remote add origin github仓库的SSH地址
$: git push origin master  //完成

git 的撤销操作

commit 了不需要 commit 的文件, 还没有进行 push, 可以进行撤销

  • 使用git log查看 commit 日志
  • 找到需要撤销的那次的 commit 的哈希值
  • 使用git reset --hard commit_id来撤回

进行了一个错误push, 希望进行版本回退

  • 方法一 : 使用git reset直接回退到之前的版本x, 丢弃x之后的所有版本
$: git log (查看记录, 寻找到想要回退到的目标版本号(也可以直接在github网站上看))
$: git reset --hard 目标版本号 (进行版本回退)
$: git push -f (强行提交, 因为本地HEAD指向的版本比远程库旧,不加 -f 会报错)

或者直接git reset --soft HEAD^, HEAD^ 的意思是上一个版本, 也可以写成 HEAD~1, 或者撤销两次: HEAD~2, soft参数表示不改动工作空间代码,

  • 方法二 : 使用git revert, 创建一个新版本, 该新版本内容和想要回退到的目标版本x一致, 而不丢弃x之后的所有版本
$: git log (寻找到目标版本之后的一次提交的版本号)
$: git revert -n 版本号

  • 如果是commit注释写错了, 只想改注释, 只需要
$: git commit --amend

git的分支管理

  • 查看分支 : git branch
  • 创建分支 : git branch
  • 切换分支 : git checkout

直接创建一个分支并切换到该分支 : git checkout -b

  • 合并某分支到当前分支 : git merge

合并分支只需要将当前分支的指针指向指定分支的的当前提交, 所以速度非常快
合并时遇到冲突想取消合并操作, 使用 : git merge --abort
想回退可以使用git resetgit .revert

  • 删除分支 : git branch -d

由于没有公钥,无法验证下列签名

新装的系统换了个源, 然后执行sudo apt-get update时报错:

 由于没有公钥,无法验证下列签名: NO_PUBKEY A074F0583066C9C9

解决办法 :

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A074F0583066C9C9 (换成你自己提示的)

其实第一次执行莫名不行, 第二天还是这个方法又好了…

删除远程仓库文件

git rm -r --cached 文件名
git commit -m "..."
git push

你可能感兴趣的:(github)