Skip to main content

One post tagged with "git"

View All Tags

· One min read

今天在 git clone 一个 github 仓库的时候出现了以下错误

ssh_exchange_identification: read: Connection reset by peer

怀疑是代理的原因,试了全局、直连、规则都不行,查找了一些文章有说可以使用以下命令查看详细调试信息

ssh -vvv -T git@github.com

还是不行,在 v2ex 上看到一个楼主说需要加个配置,所以就试了下

~/.ssh/config 中添加以下配置

Host github.com
Hostname ssh.github.com
Port 443

再试下就可以了

· One min read

场景

假如git commit 链是

A -> B -> C -> D

如果想把B,C,D都给revert,除了一个一个revert之外,还可以使用range revert

git revert B^..D 

这样就把B,C,D都给revert了,变成:

A-> B ->C -> D -> D'-> C' -> B'

用法

git revert OLDER_COMMIT^..NEWER_COMMIT

如果我们想把这三个revert不自动生成三个新的commit,而是用一个commit完成,可以这样:

git revert -n OLDER_COMMIT^..NEWER_COMMIT
git commit -m "revert OLDER_COMMIT to NEWER_COMMIT"

· One min read

如果自己一个不小心的提交了一些敏感的信息到 git 上面,

而自己的项目有可能被其他人看到,如果查看历史记录还是能看到自己提交那些文件。那么如果彻底从历史记录中的删除这些文件 操作是在 Linux 下面做的 :

git filter-branch --index-filter 'git rm --cached --ignore-unmatch db.properties*' --prune-empty --tag-name-filter cat -- --all
git push origin master --force
rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --prune=now
git gc --aggressive --prune=now

· One min read

基本

git add 添加 git commit -m "xxx" 注释提交 git log 提交日志 git log --pretty=oneline 提交日志在一行显示 git reset --hard HEAD~1 回退到上一个提交 git reset --hard 467dcab 回到某个commit git reflog 查看命令历史 git checkout -- file 丢弃工作区修改 git rm 删除一个文件

暂存工作区

git stash 当前工作现场“储藏”起来 git stash pop 恢复并删除stash内容 git stash apply 恢复 git stash drop 删除stash内容 git stash list 列出stash列表

分支管理

git branch 查看分支
git branch `<name>` 创建分支
git checkout `<name>` 切换分支
git checkout -b `<name>` 创建+切换分支
git merge `<name>` 合并某分支到当前分支
git branch -d `<name>` 删除分支
git branch -D name 强行删除分之
git checkout -b dev origin/dev 创建远程分之到本地
git pull 从远程分之拉取
git branch --set-upstream dev origin/dev 指定本地dev分支与远程origin/dev分支的链接

创建分支,修改代码,合并并删除分支过程

git checkout master          切换到主分支
git checkout -b bug-001 创建bug-001分之
git add file 添加文件
git commit -m "fix bug 001" 提交文件并注释
git checkout master 切换到主分支
git merge --no-ff -m "merge bug fix 001" bug-001 bug-001分之合并到当前分支
git branch -d bug-001 删除bug分支

标签管理

git tag 列出标签
git tag v1 打一个新标签
git tag v1 6224937 给某次提交打tag
git tag -a v1 -m "tag desc" 6224937 指定某一标签打tag并注释
git show v1 看到文字说明
git tag -d v1 删除标签
git push origin tagname 推送标签到远程仓库
git push origin --tags 一次推送所有本地未推送标签
git push origin :refs/tags/tagname 删除远程标签