文章目录
本地新建一个仓库要push到github上
- 在
github
上创建一个同名空仓库 - 在本地仓库中执行 :
$: 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: 当前分之没有跟踪信息
- 可以指定为:
git pull origin master
- 或者可以设置它, 使你的本地主分之跟踪 github 主分支作为上游:
git branch --set-upstream-to=origin/master master
git pull
想要统计github仓库代码
- 查看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为你的用户名
-
统计每个人增删行数
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
-
查看仓库提交者排名前五的人
git log --pretty='%aN' | sort | uniq -c | sort -k1 -n -r | head -n 5
-
添加或修改的代码行数:
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 <name>
- 切换分支 :
git checkout <name>
直接创建一个分支并切换到该分支 :
git checkout -b <name>
- 合并某分支到当前分支 :
git merge <name>
合并分支只需要将当前分支的指针指向指定分支的的当前提交, 所以速度非常快
合并时遇到冲突想取消合并操作, 使用 :git merge --abort
想回退可以使用git reset
和git .revert
- 删除分支 :
git branch -d <name>
由于没有公钥,无法验证下列签名
新装的系统换了个源, 然后执行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