chrom禁用浏览器回退按钮不管用_什么?作为程序员你都工作了还不会用Git
![](/assets/blank.gif)
git管理文件和代码的使用
![](/assets/blank.gif)
作者:hackett
微信公众号:加班猿
Git是一个免费的开源 分布式版本控制系统,旨在快速高效地处理从小型到大型项目的所有内容。Git易于学习, 占地面积小,具有闪电般的快速性能。它具有Subversion,CVS,Perforce和ClearCase之类的SCM工具,具有廉价的本地分支,方便的暂存区域和 多个工作流等功能。--《Git官网》
依稀还记得当初写论文的时候,保存的论文文档是这样子的,代码文件夹是这样的。根据需求删除或修改一些东西后另存为另一个文件,过一段时间后,想找回被删除的文字/代码,但是不知道保存在哪个文件里去了,想保留最新的一个把其他都删除掉,又怕哪天会用上不敢删除,真的烦人,这个时候就轮到我们强大的Git出场了,顺便记录一下自己从廖雪峰的官方网站Git教程的学习。
![](/assets/blank.gif)
![](/assets/blank.gif)
我工作中常用的指令
1、如果你没有项目的代码,组长一般都会给你一个链接,这时候你就可以用git命令git clone
下来
git clone https://github.com/CodingEmbedded/mygit.git
![](/assets/blank.gif)
2、接到主管的需求(此刻的我是想拿我的ZFB收款码出来的),一般来说都是新建一个分支的去开发的
git check -b 分支名
![](/assets/blank.gif)
3、此时就可以愉快地写bug了,有时候同事/主管问你改了什么问题,你改了挺多不记得可以先status
再diff
一下可以看到我们修改了那些文件增删了那些内容
git statusgit diff
![](/assets/blank.gif)
4、写好之后就可以先git add
再git commit
进行本地代码的提交
git addgit commit -m "message"
5、提交到远程仓库需要用push
git push
6、假如在你写的时候有人提交了代码,这时候你需要pull
最新的代码下来
git pull
如果没有冲突就可以提交代码(有冲突的话就按照Git提示做修改再提交)
7、你的代码有一个致命bug,并且已经提交到了远程仓库,版本回退的方法: 先用下面命令找到要回退的版本的commit_id:
git reflog
然后回退版本:
git reset --hard commit_id
最后强制推送到远程分支:
git push -f
可以看到图1是提交了一个记录为“add or del”,图2图3为回退版本操作,图4图5对比可以看出git已经回退了
图1
![](/assets/blank.gif)
图2
![](/assets/blank.gif)
图3
![](/assets/blank.gif)
图4
![](/assets/blank.gif)
图5
![](/assets/blank.gif)
一、创建版本库
1、新建一个空目录(如下我是E
盘 –> code
目录下新建一个test
版本库)
2、通过git init
命令把这个目录变成Git可以管理的仓库
3、ls -ah
查看.git
>目录和./
>../
>,那是因为.git
这个目录默认是隐藏的。
![](/assets/blank.gif)
二、添加文件到仓库
1、编写一个文件 text.txt
2、使用命令git add <file>
,可反复多次使用,添加多个文件,添加全部文件使用git add -A
3、使用命令git commit -m <message>
,完成,message
为提交的文本信息
![](/assets/blank.gif)
三、查看工作状态和修改的文件
1、要随时掌握工作区的状态,使用git status
命令。
2、如果git status
告诉你有文件被修改过,用git diff
可以查看修改内容。
![](/assets/blank.gif)
四、git的版本回退
1、版本回退前,用git log
可以查看提交历史,以便确定要回退到哪个版本。
2、HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间回退,使用命令
git reset --hard commit_id
。
3、Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本上一个版本就是HEAD^
,上上一个版本就是HEAD^^
,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100
。
4、要重返未来,用git reflog
查看命令历史,以便确定要回到未来的哪个版本。使用命令git reset --hard commit_id
。
![](/assets/blank.gif)
五、暂存区
提交一个readme.txt的过程
![](/assets/blank.gif)
六、管理修改
Git是如何跟踪修改的,每次修改,如果不用git add
到暂存区,那就不会加入到commit
中。
七、撤销修改
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file
。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>
,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考四、git的版本回退一节(用git log查看命令历史,以便确定要回到未来的哪个版本。使用命令git reset --hard commit_id
),不过前提是没有推送到远程库。
八、删除文件
命令git rm
用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失*最近一次提交后你修改的内容*
。
git checkout -- <file>
其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
九、添加远程库
第一步:在git下创建SSH Key
。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa
和id_rsa.pub
这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:
$ssh-keygen -t rsa -C "youremail@example.com"
你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。
如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsa
和id_rsa.pub
两个文件,这两个就是SSH Key的秘钥对,id_rsa
是私钥,不能泄露出去,id_rsa.pub
是公钥,可以放心地告诉任何人。
第二步:登陆GitHub,打开“Settings”,点“SSH and GPG keys”
,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容,点“Add Key”
,你就应该看到已经添加的Key:
![](/assets/blank.gif)
第二步:创建一个GitHub账号,添加一个空的仓库。首先,登陆GitHub,然后,在右上角找到“new repository”按钮,创建一个新的仓库:在Repository name填入仓库名,其他保持默认设置,点击“Create repository”按钮,就成功地创建了一个新的Git仓库:
![](/assets/blank.gif)
目前,在GitHub上的这个仓库还是空的,GitHub告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。
现在,我们根据GitHub的提示,在本地的仓库下运行命令:git remote add origin + ssh链接
使用命令git push -u origin master
将内容推送上去。
![](/assets/blank.gif)
注意:检查git的配置文件的邮箱还有用户名还有URL是否正确。才能进行下一步操作。
要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git
;关联后,使用命令git push -u origin master
第一次推送master分支的所有内容;此后,每次本地提交后,只要有必要,就可以使用命令git push origin master
推送最新修改
十、从远程库克隆
要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone+ ssh链接
命令克隆。
Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。
十一、创建与分支(Git鼓励大量使用分支)
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
十二、解决冲突
当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。用git log --graph
命令可以看到分支合并图。
十三、分支管理策略
准备合并dev分支,请注意--no-ff
参数,表示禁用Fast forward
,git merge --no-ff -m "merge with no-ff" dev
因为本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去。
十四、bug分支
修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;当手头工作没有完成时,先把工作现场git stash
一下,然后去修复bug,修复后,再git stash pop
,回到工作现场。
十五、feature分支
开发一个新feature
,最好新建一个分支;如果要丢弃一 个没有被合并过的分支,可以通过git branch -D <name>
强行删除。
十六、多人协作
查看远程库信息,使用git remote -v
;
本地新建的分支如果不推送到远程,对其他人就是不可见的;
从本地推送分支,使用git push origin branch-name
,如果推送失败,先用git pull
抓取远程的新提交;
在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name
,本地和远程分支的名称最好一致;
建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name
;
从远程抓取分支,使用git pull
,如果有冲突,要先处理冲突。
十七、创建标签
命令git tag <tagname>
用于新建一个标签,默认为HEAD,也可以指定一个commit id
;
命令git tag -a <tagname> -m "blablabla..."
可以指定标签信息;
命令git tag
可以查看所有标签
用命令git show <tagname>
可以看到说明文字
注意:标签总是和某个commit
挂钩。如果这个commit
既出现在master
分支,又出现在dev
分支,那么在这两个分支上都可以看到这个标签。
十八、操作标签
命令git push origin <tagname>
可以推送一个本地标签;
命令git push origin --tags
可以推送全部未推送过的本地标签;
命令git tag -d <tagname>
可以删除一个本地标签;
命令git push origin :refs/tags/<tagname>
可以删除一个远程标签。 最后总结一下Git的常用命令:
mkdir
XX (创建一个空目录 XX指目录名)pwd
显示当前目录的路径。git init
把当前的目录变成可以管理的git仓库,生成隐藏.git文件。git add XX
把xx文件添加到暂存区去。git commit –m “XX”
提交文件 XX是提交的注释。git status
查看仓库状态git diff XX
查看XX文件修改了那些内容git log
查看历史记录git reset --hard HEAD^
或者git reset --hard HEAD~
回退到上一个版本(使用git reset –hard commit_id
回退到commit_id的指定版本 )cat XX
查看XX文件内容git reflog
查看历史记录的版本号idgit checkout -- XX
把XX文件在工作区的修改全部撤销。git rm XX
删除XX文件git remote add origin + SSH链接
关联一个远程库git push –u
(第一次要用-u 以后不需要)origin maste
r 把当前master分支推送到远程库git clone + SSH链接
从远程库中克隆git checkout –b dev
创建dev分支 并切换到dev分支上git branch
查看当前所有的分支git checkout master
切换回master分支git merge dev
在当前的分支上合并dev分支git branch –d dev
删除dev分支git branch name
创建分支git fecth
手动拉取远程仓库更新的信息git stash
把当前的工作隐藏起来 等以后恢复现场后继续工作git stash list
查看所有被隐藏的文件列表git stash apply
恢复被隐藏的文件,但是内容不删除git stash drop
删除文件git stash pop
恢复文件的同时 也删除文件git remote
查看远程库的信息git remote –v
查看远程库的详细信息git push -u origin/master
Git将会强制提交到master
分支上git --amend
简单地来说,可以理解成对最后一次提交做修正。<前提是当前最后一次提交没有merge
>
参考文献
- Git教程 - 廖雪峰的官方网站 https://www.liaoxuefeng.com/wiki/896043488029600
如果你觉得文章还不错,记得"点赞关注"
关注我的微信公众号【 加班猿 】可以获取更多内容
![](/assets/blank.gif)
chrom禁用浏览器回退按钮不管用_什么?作为程序员你都工作了还不会用Git相关推荐
- 屏蔽浏览器 回退按钮的方法
I have had a lot of people ask, "How to I 慸isable?the back button?" or, "How do I pre ...
- vue中使用,js禁用浏览器后退按钮
* js禁用浏览器后退按钮 * vue中使用*/ methods:{goBack(){history.pushState(null,null,document.URL);}, } destroyed( ...
- 当了十年 IT 程序员,我转型做自动驾驶开发的这五年”_《新程序员》编辑部的博客-CSDN博客
"当了十年 IT 程序员,我转型做自动驾驶开发的这五年"_<新程序员>编辑部的博客-CSDN博客
- javascript怎么禁用浏览器后退按钮
1. 复制代码 代码如下: <script language="JavaScript"> javascript:window.history.forward(1); & ...
- JavaScript禁用浏览器后退按钮
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 开发工具与关键技术:vs20 ...
- JavaScript如何实现禁用浏览器后退按钮
方法一: <script>window.history.forward(1); </script> 利用JS产生一个"前进"的动作,以抵消后退功能,这种方法 ...
- 浏览器崩溃_字节跳动程序员28岁身价上亿,财务自由宣布退休;微软最新系统再迎“喜报”:更多用户的浏览器开始崩溃...
新闻1:字节跳动程序员28岁身价上亿,财务自由宣布退休 最近字节跳动前员工郭宇火了. 原因是他在今年二月份发了一条微博.大概是说他在28岁的年纪实现了财务自由,然后选择了退休. 郭宇本来是字节跳动的一 ...
- 前端怎么加粗字体_【好程序员独家】100道前端面试题(精选版 含答案)
为了方便各位热爱前端的小伙伴能够更加便捷的学习到前端,好程序员特意为大家整理100道独家HTML5大前端面试题!希望能给你带来帮助! 一.Doctype的作用?严格模式和混杂模式的区分,以及如何触发这 ...
- post大小限制_作为一个程序员,面试中常问的get和post的区别,你真的知道吗
作为一个程序员无论是搞前端的还是搞后端的,只要问起来GET和POST的区别,都能说出来个一二三四来. 你可能自己写过无数个GET和POST请求,或者也看过很多权威网站总结出来的区别,你非常清楚的知道什 ...
最新文章
- 聊天机器人之需求分析和流程介绍
- 域名解析对网站SEO优化有何影响?
- QT的QDesignerWidgetBoxInterface类的使用
- JavaScript设计模式—富有表现力的Javascript(一)
- Python-基础-时间日期处理小结
- python长整数相乘_python写的大整数相乘的方法
- stm32单片机端口映射_STM32单片机的重映射与地址映射的使用方法及步骤
- Enterprise Solution 解决方案与源代码下载
- java解析document_java 值Document解析xml详细介绍
- php 读写excel 网络错误,谁用过PHPExcel,导出的文件报“无法读取的内容”错误
- godaddy mysql 连接 设置 2014_GoDaddy主机数据库远程访问设置的方法
- 二叉树的遍历--递归+非递归(两种)
- java lombok 插件_idea 安装 lombok 插件
- python curl 获取返回值_php curl_exec()函数 CURL获取返回值的方法
- Matter-JS Composites 混合材料 · 上
- 三、pgAdmin 4 布局设置
- delphi在linux运行,实现了delphi unigui跑在linux上
- Oracle10g或Oracle11g完全卸载正确步骤(亲身体验-详细图文教程)
- MySQL必知必会pdf
- c语言三角形判定条件,c语言判定三角形的各种类型——请大家指点
热门文章
- 如何在AWS上架设文件服务器
- one order event handling - 初始化过程
- 如何处理SAP Fiori Launchpad错误消息:Could not start the app due to a configuration problem
- Require Busy dialog
- SAP Fiori应用中事务锁的实现 - Transaction Lock实现机制
- 如何查看CRM WebUI,C4C和Hybris里的页面技术信息
- 解决mysql的乱码问题_完美解决mysql中文乱码的问题
- php select user 验证,php 用户验证的简单示例
- 数据可视化|实验五 分析1996-2015年人口数据各个特征的分布与分散状况
- 【测评】海康EliteX---全球首款USB4.0移动固态硬盘,硬盘黑科技,移动闪电侠