链接:https://www.liaoxuefeng.com/wiki/896043488029600
当前目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库的,如果你没有看到.git目录,那是因为这个目录默认是隐藏的
on branch master 提示你在master branch changes not staged for commit: 没有add但修改过的文件 changes to be commited: 已经add的文件 untracked files: 新添加且未add的文件 nothing to commit, working tree clean 工作区没有任何修改
git diff readme.txt 查看本机与仓库中readme.txt文件
一大串类似1094abd...是commit id(版本号)
HEAD^^ 上上一个版本 HEAD是一个指向不同版本号的指针 HEAD^...还可以用commit id代替,不用输完整的commit id,git会自动补齐
用来回到未来版本
电脑中能看到的目录
即隐藏目录.git,保存了很重要的暂存区(stage或者index) 分支和指针HEAD也在其中
若是误删,可以用git checkout --file还原
SSH key的设立,获得修改远程仓库的权限,目测与本次课程无关
git remote add origin git@github.com:michaelliao/learngit.git
把上面的michaelliao替换成你自己的GitHub账户名,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库
用git push命令,实际上是把当前分支master推送到远程,由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令
git clone git@github.com:michaelliao/gitskills.git
也可以用https://github.com/michaelliao/gitskills.git
HEAD严格来说不是指向提交,而是指向master,master才是指向提交的
当前分支前标*号
git merge命令用于合并指定分支到当前分支 Fast-forward表示这次合并是“快进模式”,也就是直接把master指向dev的当前提交,所以合并速度非常快
Your branch is ahead of 'origin/master' by 1 commit. Git还会自动提示我们当前master分支比远程的master分支要超前1个提交。
避免在删除分支后丢掉分支信息
需要先隐藏当前工作区?
恢复后还需用git stash drop删除
恢复后自动删除
在未合并情况下强行删除分支
当你从远程仓库克隆时,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且,远程仓库的默认名称是origin
查看远程库信息
查看更详细信息
推送时要指定本地分支 git push origin master 并不需要把所有的本地分支往远程推送
(可以在本地merge branch,也可以直接传到远程再处理)
指定本地dev分支与远程origin/dev分支的链接,如果远端dev与本地dev有冲突,正常处理即可
-
首先,可以试图用git push origin <branch-name>推送自己的修改;
-
如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
-
如果合并有冲突,则解决冲突,并在本地提交;
-
没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功!
如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/。
tag就是一个让人容易记住的有意义的名字,它跟某个commit绑在一起
链接:https://www.youtube.com/watch?v=8UguQzmswC4
certral repository 属于公司或集体 fork 把前者复制到自己的github账户上 clone 把前两者复制到电脑上
- organization上建一个repository
- fork到自己的Github上
- clone到local machine
- 新建feature branch
- 进行add,commit,push(git commit -a -m "message" 简化指令) git push <remotename> <branchname>
- 回到github,可以开启一个pull request,将自己的feature branch上的修改提交到central repository的master branch
- 删除feature branch
git remote add upstream git fetch upstream git merge --ff-only upstream/master
链接:https://www.conventionalcommits.org/en/v1.0.0/ <type>[(optional scope)]: <description>
[optional body]
[optional footer(s)]
- type是必须的,其余都是可选的
- scope必须在括号里
- description必须紧跟在冒号和一个空格之后,是对代码改变的简单总结
- commit body形式比较自由,可以有多段落,但必须另起一行
- 每个footer必须包含一个word token,word token内用 - 代替空格,比如asked-by,除了BREAKING CHANGE
- BREAKING CHANGE必须在前文中有所体现,必须用大写,可以在type末尾加!代替BREAKING CHANGE
- 一个commit只能有一个type,否则就要重新组织你的commit
- type并不确定,可以有自己的标准
- 不小心用错了type,可以用git rebase -i重新编辑commit history
- 命名规则是为了一类工具的使用?
- fix: A bug fix
- feat: A new feature
- docs: Documentation only changes
- build: Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm)
- perf: A code change that improves performance
- refactor: A code change that neither fixes a bug nor adds a feature
- style: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)
- test: Adding missing tests or correcting existing tests
(其实没太看懂)scope必须是改变的npm package的名字
- compiler
- http
- router
- package 特殊的 ""use package name" rule
feat: allow provided config object to extend other configs
BREAKING CHANGE:
extends
key in config file is now used for extending other config files
refactor!: drop support for Node 6
refactor!: drop support for Node 6
BREAKING CHANGE: refactor to use JavaScript features not available in Node 6.
docs: correct spelling of CHANGELOG
feat(lang): add polish language
fix: correct minor typos in code
see the issue for details
on typos fixed.
Reviewed-by: Z Refs #133
链接:https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow
- master branch 只记录稳定commit
- develop branch 则记录所有的commit
- feature branch 是最新develop branch的子brach,不直接跟master交互。
- release branch 预发布分支,develop branch积累到一定程度后fork出来,只进行一点bug的修补、文档的补充,不新加feature。准备好之后就merge进master branch并打上标签,同时也可以merge回develop branch
- hotfix branch 为master branch紧急修改bug,完成后merge到master branch和develop branch
链接:https://www.jianshu.com/p/811b07b129e8
- git push origin develop 把本地develop推送到所有远端branch上
- git push origin dev:develop 把本地dev推送到远端develop上
- git commit 自动打开文本编辑器以修改commit message
- git remote prune origin 清除本地记录的,远端已删除的分支
远端已经有repo,想要建立与本地的连接
- cd
- git init
- git remote add origin +repositoryLink
- git checkout -b dev
- git pull origin dev:develop 至此,origin源即是远端的链接,远端的develop分支已经与本地的dev分支建立关联,develop分支的内容已经保存到本地
- cd
- git clone repositoryLink 至此,origin源即是远端的链接,远端的master分支已经与本地的master分支建立关联,master分支的内容已经保存到本地
比如想新加一个功能
- git checkout dev 切换到dev分支
- git checkout -b feat 创建并切换到dev分支
- 进行修改
- git status 常常查看仓库状态是个好习惯
- git add <filename> 将修改过的file加入暂存区
- git commit 然后会自动弹出文本框,填写了commit message后保存关闭文本框,commit完成
- git checkout dev 回到dev分支
- git merge feat 将feat分支合并到dev分支
- git branch -d feat 删除feat分支
- git push origin dev:develop 将本地dev分支,提交到远端develop分支
- 若上一步出错,是因为远端的develop分支被别人修改过,在dev分支执行git pull,再执行上一步即可 至此,远端的develop分支已经和本地的dev分支同步在最新状态,远端的master分支则没有更新,但会自动提示是否发起PR,大多数情况下不用立即PR