Git
关于Git学习的书籍Git Proopen in new window
Git 常用命令
git status
查看状态git add
添加变动至暂存区git commit -m 'xxx'
提交暂存区至工作区git push
拉取代码cat xx.js
查看文件git log
打印 git 日志git reset
回退版本git checkout -- xx.js
把工作区的修改全部撤回git diff HEAD -- xx.js
查看当前的变动git pull
推送代码
分支
- 查看分支
git branch
- 创建分支
git branch xx
(分支名称) - 切换分支
git checkout xx
(分支名称) - 创建并切换分支
git checkout -b xx
(分支名称) - 合并分支
git merge dev
(分支名称) 把当前分支合并到主分支 - 删除分支
git branch -d dev
(分支名称) - 查看远程分支详情
git remote -v
- 推送指定分支
git push origin dev
(分支名称) - 切换分支:
git checkout <name>
或者git switch <name>
- 创建+切换分支:
git checkout -b <name>
或者git switch -c <name>
- 合并某分支到当前分支:
git merge <name>
- 删除分支:
git branch -d <name>
- 下载指定分支
git clone -b dev2 http://git-test.etledu.com/ETLBOAO/BIM1xTrain.git
git clone -b
指定从分支下载 dev2 指定从哪个分支下载 http git 链接
合并分支
比如将dev合并到master分支
- 先在dev分支上拉取master分支,保证是最新的代码(
git pull origin master
) - 然后切换到master分支(
git checkout master
) - 然后合并(
git merge dev
)
参考:分支合并,一看就懂open in new window
代码储存
git stash
将代码存储在储存区
参考:Git Stash使用方法open in new window
标签
- 命令
git tag <tagname>
用于新建一个标签,默认为 HEAD,也可以指定一个 commit id; - 命令
git tag -a <tagname> -m "blablabla..."
可以指定标签信息; - 命令
git tag
可以查看所有标签。 - 命令
git push origin <tagname>
可以推送一个本地标签; - 命令
git push origin --tags
可以推送全部未推送过的本地标签; - 命令
git tag -d <tagname>
可以删除一个本地标签; - 命令
git push origin :refs/tags/<tagname>
可以删除一个远程标签。
SSH
最近的 http 链接总是出问题,还是 ssh 比较稳。
user
切换帐号其实很简单, 如果你不知道现在本地 Git 用的帐号是什么,你可以输入
git config user.name
查看用户名git config user.email
查看用户邮箱
修改用户名和邮箱的命令
git config --global user.name "Your_username"
git config --global user.email "Your_email"
查看是否配置成功
git config --list
问题场景
- 技术主管让你去再某个 git 分支上新建一个分支去做你的项目,那么如何在原远程分支的基础上新建自己的分支呢? 解决方法
- 按照以下命令敲即可
git branch newBranch
-- 新建本地分支git checkout newBranch
-- 本地切换到自己的分支git pull origin xxxxBranch
-- 从远程目标分支 copy 代码git push origin newBranch
-- 将本地新建的分支同步到服务器git branch --set-upstream-to=origin/newbranch newbranch
-- 本地分支和远程分支建立追踪 到此为止,就完成了需求
只记得用户名和密码的情况下使用
注意
push
之前先pull
代码
问题
git config proxy
前一段时间因为墙很厚,github 的代码老是拉取失败,后来就设置了下代理,然后这两天在使用的时候就老报错。
1. fatal: unable to access 'http://xxx': OpenSSL SSL_read: Connection was reset, errno 10054
2. fatal: unable to access 'http://xxx': Received HTTP code 400 from proxy after CONNECT
3. fatal: unable to access 'http://xxx': Failed to connect to github.com port 443: Timed out
4. fatal: unable to access 'http://xxx': Received HTTP code 400 from proxy after CONNECT
1
2
3
4
2
3
4
commit message 规范
提交格式:
<type>(<scope>): <subject>
1
- type(必须):用于说明commit的类别,可以使用以下标示
- feat:新功能(feature)
- fix:修复bug
- docs:文档(documentation)
- style: 格式(不影响代码运行的变动)
- refactor:重构(即不是新增功能,也不是修改bug的代码变动)
- test:增加测试
- chore:构建过程或辅助工具的变动
- scope(选填):描述影响范围
- 数据层
- 控制层
- 视图层
- subject(必填):本次变动的简短描述
- 五十字以内
- 使用第一人称
- 以动词开头
参考:58-知识分享社区open in new window
Commit example
- feat:新增功能
- fix:bug 修复
- docs:文档更新
- style:不影响程序逻辑的代码修改(修改空白字符,格式缩进,补全缺失的分号等,没有改变代码逻辑)
- refactor:重构代码(既没有新增功能,也没有修复 bug)
- perf:性能, 体验优化
- test:新增测试用例或是更新现有测试
- build:主要目的是修改项目构建系统(例如 glup,webpack,rollup 的配置等)的提交
- ci:主要目的是修改项目继续集成流程(例如 Travis,Jenkins,GitLab CI,Circle等)的提交
- chore:不属于以上类型的其他类型,比如构建流程, 依赖管理
- revert:回滚某个更早之前的提交
GitHub
如出现 Please enter a commit message to explain why this merge is necessary.(请输入提交消息来解释为什么这种合并是必要的)
git 在 pull 或者合并分支的时候有时会遇到这个界面。可以不管(直接下面 3,4 步),如果要输入解释的话就需要:
1.按键盘字母 i 进入 insert 模式
2.修改最上面那行黄色合并信息,可以不修改
3.按键盘左上角"Esc"
4.输入":wq",注意是冒号+wq,按回车键即可