GitHub 学习笔记
前言:一些学习Github后留下的笔记,因为每次都要翻来翻去查阅结果本子被我翻烂了。今天终于忍无可忍,遂整理成一篇文章。其实最初学习使用Git,并不是从上面正儿八经像《ProGit》之类的书上学来的,而是从《Python Web开发 测试驱动方法》跟着跟着练起来,后来才慢慢熟悉了Gayhub上的各种玩法。
Github Favorited Markdown
日常使用和 Markdown 相差无几,具体的可以看这里:GitHub Flavored Markdown Spec
Git
基本配置
- 设置姓名和邮箱地址
$ git config --global user.name "[First name] [Lastname]" $ git config --global user.email "[Name]@[Domain]"
- 提高命令输出的可读性
$ git config --global color.ui auto
- 设置SSH Key
$ ssh-keygen -t rsa -C "[Name]@[Domain]"
- 添加公开密钥
Github右上角头像 >> Settings >> SSH and GPG keys >> New SSH key >> 复制id_rsa.pub内容并提交
- 测试连通
ssh -T git@github.com
Git 的配置
(缺省值状态下为 Local, 具体内容均保存在
.git/config
文件中。优先级 Local > Global > System,global 的配置被保存在用户的根目录下的 .gitconfig
文件中)- 仅对当前仓库有效
$ git config --local
- 对当前用户的所有仓库有效
$ git config --global
- 对系统所有登录的用户有效
$ git config --system
- 显示 Config 的配置信息
$ git config --list --local
- 清除配置
$ git config --unset --local user.name
基本操作
如果是一个人玩的话,掌握这些操作就没问题了(大概
- 将当前文件夹创建为 Git 仓库 :
git init .
- 添加需要忽略的文件(夹):
echo "whatYouWantTo.Ignore*" >> .gitignore
- 添加当前文件夹中的其他内容:
git add .
- 查看当前提交状态:
git status
- 将修改过的文件放入暂存区:
git add -u
- 快速提交:
git commit -am "[What you want to say]"
- 清除已提交的文件:
git rm -r --cached folder/filename/*
- 查看两次提交之间的差异:
git diff [filename or blank for all]
- 显示提交记录:
git log --graph --oneline --decorate
- 添加远程仓库:
git remote add [branch_name] [repo_address]
- 从另一个存储库下载对象和引用:
git fetch [repo_name]
- 关键字段查询:
grep -E "class|def" folder/filename
- 还原所有未提交的改动:
git reset --hard [first six alnum]
- 推送标签:
git tag LIVE && git push origin LIVE
- 回滚位于暂存区上的所有变更:
git reset --hard
- 切换分支:
git checkout branchname
- 删除分支:
git branch [-d/-D] branchHash
其他小技巧
注:Git的参数顺序是 命令 哈希值 — 具体文件名,涉及具体文件名时,
--
不可省略。提交重命名的文件
# 普通方法
$ mv readme readme.md
$ git add readme.md
$ git rm readme
# Git 方法
$ git mv readme readme.md
查看 Git 的历史记录
- 查看所有分支就近四个历史记录
$ git log --all -n4
- 查看指定分支的历史记录
$ git log --oneline branchname
- 查看分支历史
$ git branch
将分支修改为 Fast-Forward 并与远程仓库合并
- 使用 Merge 方法
$ git merge branchname
从浏览器打开某一命令的帮助
$ git help --web log
修改某次提交的信息
- 修改最新提交的信息
$ git commit --amend
- 修改之前提交的信息或合并提交
$ git rebase -i hashValueOfItFatherNode
- 恢复暂存区为 Head
$ git reset HEAD
合并请求
- 先 Fork 别人的代码,然后从自己的仓库用不带工作区的方式克隆到本地
git clone [git_repo_address.git]
- 在本地创建一个分支
git checkout -b some-feature
- 本地提交
git commit -am "Some Feature"
- 修改完成后,就可以把代码扔回自己的仓库了
git push origin some-branch
- 最后在网页上 New Pull Request,提交 Issue 即可。
搁置开发
如果在当前仓库中碰到了加急任务,可以使用 Stash 搁置当前的分支。
- 启用搁置
$ git stash
- 查看搁置列表
$ git stash list
- 复制搁置至当前指针
$ git stash apply
- 剪切搁置至当前指针(会从 list 中删除记录)
$ git stash pop
Git 的备份传输协议
常用协议 | 语法格式 | 说明 |
---|---|---|
本地协议1 | /path/to/repo.git | 哑协议 |
本地协议2 | file:///path/to/repo.git | 智能协议 |
http/https 协议 | http(s)://git-server.com:port/path/to/repo.git | 智能协议,开源协作常用 |
ssh协议 | user@git-server.com:path/to/repo.git | 智能协议,内部合作中常用 |
- 哑协议和智能协议的却别:哑协议进度不可见,速度更慢。
可视化查看 Git 分支
首先要进入仓库的目录,然后使用以下命令:
$ gitk --all
图形界面的其他内容可以参阅官方文档
不同人修改了同一/不同文件的同一/不同区域
多人协作冲突的大部分时候,都可以根据
git status
的提示进行相应修改。基本思路如下:- 将远程仓库 Pull 到本地
- 打开冲突的文件,按照 Git 的提示进行相应的删减
- 重新 Commit 和 Push
HUB
整理中
常用搜索语法
语法 | 用法 | 例子 |
---|---|---|
in | 查找某个文件内的关键字 | Keywords in:readme |
stars | 按收藏数查找 | stars:>1000 |
filename | 查找相关文件 | ‘keywords’ filename:.py |
其他搜索语法可以参考 官方文档
评论
发表评论