代码拉取完成,页面将自动刷新
Learning Git
学习来源:廖雪峰https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
下载与配置:
下载地址:git官网下载
配置: git config --global user.name "lixiaobing"
git config --gloabal user.email "lxb115416@163.com"
创建版本库(仓库,repository):
初始化仓库:git init
添加修改到暂存区:git add <filename>
强制添加到暂存区:git add -f <filename>
提交修改:git commit -m <message> ,message为修改的说明信息
修改状态与文件修改内容的查看:
修改状态查看:git status
未add的修改内容查看:git diff <filename>
查看修改的提交日志:
提交日志:git log ,显示版本号,作者,日期,修改的备注这些信息
提交日志简洁显示:git log --pretty=oneline,只显示版本号及备注了
版本的时光旅行:
回退到上一次提交的版本:git reset --hard HEAD^
版本定位:git reset --hard <version number>,提供版本,即可定位版本,就可进行版本回退和前进了
显示之前执行的命令信息找到版本号:git reflog,该命令的结果会展示出之前每一次提交的命令信息,从结果中可以找到提交命令的信息,从而得到之前提交的版本号
工作区的文件和版本库里最新版的区别:
工作区和版本库里的对比区别:git diff HEAD -- <filename>
撤销修改:
撤销工作区的修改:git chekout -- <filename>
撤销暂存区的修改:git reset HEAD <filename>
文件的删除:
确实是要删除的文件:第一步,git rm <filename> ;第二步,git commit -m "xxx"
误删了要恢复删除的文件:git chekout -- <filename> ,其实就是撤销这次删除操作修改
分支管理:
查看分支:git branch
创建并切换分支:git chekout -b <branch-name>
创建分支:git branch <branch-name>
切换到相应分支:git chekout <branch-name>
合并指定分支到当前分支:git merge <branch-name>
删除分支:git branch -d <branch-name>
强行删除分支:git branch -D <branch-name>
分支冲突解决:当自动合并时遇到冲突,在master上手动修改文件,git status 可以告诉那个文件存在冲突
查看分支图:git log --graph
分支策略:在实际开发中,master指向的是稳定的版本,实际开发是在dev分支上
每个小伙伴都有自己的分支如devx,写好后往dev分支上提交,再从dev分支上往master分支上提交
bug修复时:当正在dev分支上工作一半时需要修复一个bug,此时dev分支上工作未完成无法提交,此时就需要保护现场
分支现场保护:git stash
查看保护的现场信息:git stash list
恢复现场:git stash apply
删除现场信息:git stash drop
恢复并删除现场:git stash pop
恢复指定的现场x:git stash apply stash@{x}
远程配置:
多人协作:
查看远程库信息:git remote / git remote -v ,会显示抓取和推送的地址
推送分支:git push origin master
推送其他分支:git push origin <branch-name>
克隆仓库:git clone <git-address>,从远程库克隆时,默认情况下只能看到本地的master分支
由于只能看到master分支,为了看到其他分支,还需创建远程origin的分支到本地:git chekout -b <branch-name> origin/<branch-name>
抓取最新提交:git pull
抓取失败,提示no tracking information:需要创建远程分支之间的连接,git branch --set-upstream-to <branch-name> origin/<branch-name>
多人协作的工作模式:
step1:试图推送自己的修改
step2:如果推送失败,说明远程分支比本地的更新,需要抓取并合并
step3:如果抓取失败,说明本地分支和远程分支连接关系没有建立,需建立连接关系后在抓取
step4:如果合并失败,说明存在冲突,需解决冲突后在本地提交
step5:冲突解决后,再推送
标签管理:
标签tag:让人容易记住的有意义的名字,和某个commit绑定在一起。
tag与commit的最大区别就是,commit能根据提交的修改而移动,tag不能。
tag默认是保存在本地,不会推送到远程的
新建标签:git tag <tag-name>,默认是建立在最新提交commit上的
对某一次提交建立标签:git tag <tag-name> <commit-id>
建立带说明的标签:git tag -a <tag-name> -m "some-information"
git tag -a <tag-name> -m "tag-information" <commit-id>
列出所有的标签:git tag,标签是按字母顺序列出的,不是按时间列出的
查看某个标签信息:git show <tag-name>
删除本地标签:git tag -d <tag-name>
推送标签到远程:git push origin <tag-name>
git push origin --tags,一次性全部推送完
删除远程标签:step1:删除本地标签:git tag -d <tag-name>
step2:删除远程标签:git push origin :refs/tags/<tag-name>
step3:在github上查看是否删除了标签
自定义git:
配置颜色等信息:
提交时忽略特殊文件:step1:在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。
不需要从头写.gitignore文件,GitHub已经为我们准备了各种配置文件,只需要组合一下就可以使用了。所有配置文件可以直接在线浏览:https://github.com/github/gitignore
忽略文件的原则是:
1.忽略操作系统自动生成的文件,比如缩略图等;
2.忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件;
3.忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。
比如:
# Windows:
Thumbs.db //忽略数据库
ehthumbs.db
Desktop.ini
# Python:
*.py[cod]
*.so
*.egg
*.egg-info
dist
build
# My configurations:
db.ini
deploy_key_rsa
step2:就是把.gitignore也提交到Git,就完成了!
当然检验.gitignore的标准是git status命令是不是说working directory clean。
step3:想要添加的文件没有被添加,检查.gitignore
使用git check-ignore -v <filename>,可以看出.gitigore里哪个规则应该修改。
参与开源项目:
Git原理说明:
HEAD指向当前分支,例如HEAD指向master分支,master指向提交。
test branch Conflict.
test merge.
test merge --no-ff.
test tag in dev branch.
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。