Github速查笔记
Github注册配置
注册
按网站操作提示进行,https://github.com/signup
配置SSH登录
生成密钥
添加公钥到Github
登录Github,在
Settings
→SSH and GpG keys
中添加id_rsa.pub
的内容到SSH keys
中
测试
Git Bash设置
在%USERPROFILE%
下增加.profile
文件,写入如下内容
GIT_SSH
为本机实际地址,这个代码主要目的是启动GitBash后自启动ssh agent服务
TortoiseGit设置
软件设置 → 网络 → SSH客户端 → 选定
Git\usr\bin\ssh.exe
会自动选定
IDEA设置
- 在设置里搜索 github,GitHub登录,IDEA会自动处理;使用 ssh 克隆 Git 仓库
- Subversion → SSH→ 设置私钥
Github使用
基本认知
github
分为3个部分:Remote
、Local
和Disk
。Remote
:为远程仓库,main
(主分支)为master
。Local
:为本地仓库。Disk
:为本地磁盘。
基本命令
最佳实践
###克隆远程仓库到本地
首次
clone
,Remote
、Local
和Disk
全都保持一致。
创建分支
准备修改代码前,要先建立一个新的
feature branch
。目的是保证主分支的代码安全。
Remote
:
main(master)
:未改变
Local
:
main(master)
:未改变new-feature
:未改变
Disk
:
- 当前为将要修改的
new-feature
分支
修改代码
修改代码后,需要查看本次修改。确认好要修改的文件。
添加本次修改的代码到
暂存区
。
推送代码到本地仓库
将
暂存区
的代码,提交到Local
中。
Remote
:
main(master)
:未改变
Local
:
main(master)
:未改变new-feature
:存在new-commit
Disk
:
- 当前为
new-feature
分支:执行提交命令,将new-commit
提交到Local
。
推送代码到远程仓库
将
new-commit
提交到Remote
中。
Remote
:
main(master)
:未改变new-feature
:存在new-commit
Local
:
main(master)
:未改变new-feature
:存在new-commit
Disk
:
- 当前为
new-feature
分支:存在new-commit
。
若当主分支与其他分支代码冲突时
- 发现远程和本地仓库代码存在版本冲突
Remote
:
main(master)
:改变了,存在other-commit
new-feature
:存在new-commit
Local
:
main(master)
:未改变new-feature
:存在new-commit
Disk
:
- 当前为
new-feature
分支:存在new-commit
。
other-commit
和 new-commit
存在代码差异。为了保证代码依然有效,需要切换到主分支验证下。
- 切换本地仓库主分支
Remote
:
main(master)
:存在other-commit
new-feature
:存在new-commit
Local
:
main(master)
:未改变new-feature
:存在new-commit
Disk
:
- 当前为
main(master)
分支:为Local
下,未改变的main(master)
。
- 同步远程仓库代码
Remote
:
main(master)
:other-commit
new-feature
:new-commit
Local
:
main(master)
:other-commit
new-feature
:new-commit
Disk
:
- 当前为
main(master)
分支:为Local
下,已同步的main(master)
。
- 切回
new-feature
分支
Remote
:
main(master)
:other-commit
new-feature
:new-commit
Local
:
main(master)
:other-commit
new-feature
:new-commit
Disk
:
- 当前为
new-feature
分支:new-commit
- 尝试在
main
分支上 合并代码
Remote
:
main(master)
:other-commit
new-feature
:new-commit
Local
:
main(master)
:other-commit
new-feature
:other-commit
→new-commit
Disk
:
- 当前为
new-feature
分支:在other-commit
基础上尝试合并new-commit
提交
如果出现了
rebase conflict
就需要人工干预,测试代码是否可以合并。成功的话,则会将代码正常合并到
Local
中。
- 推送本地的
new-feature
到远程的new-feature
分支中
Remote
:
main(master)
:other-commit
new-feature
:other-commit
→new-commit
Local
:
main(master)
:other-commit
new-feature
:other-commit
→new-commit
Disk
:
- 当前为
new-feature
分支:other-commit
→new-commit
- New pull request
发起一个
pull request
给主分支
远程仓库合并分支
Squash and merge
:将某个分支上的所有改变合并成一个,并提交到主分支。
删除合并后的分支
远程仓库合并主分支完毕后,
delete branch
删除其new-feature
分支。切换
Local
的main(master)
。删除new-feature
分支同步远端仓库代码
远程仓库同步到本地
Remote
:
main(master)
:update-commit
Local
:
main(master)
:update-commit
Disk
:
- 当前为
main(master)
分支:update-commit