时而觉得有些知识学完后感觉心里很没底,就好像没学一样,思来想去,可能是我没有把知识转换为自己的,即没有做好消化吸收,没有把输入转化为输出。为此,开搞博客,记录下学习中的所思所获所悟。
现在,就以Git学习为开篇吧!
参考廖雪峰前辈的史上最浅显的Git教程,下面记录常用命令、学习过程中发现的问题及解决问题的方法,方便遗忘时快速熟悉。
Git简介
Git是目前最优秀的分布式版本控制系统,下表是Git与常见的集中式版本控制系统(如CVS、SVN)的主要区别。
Git | CVS、SVN |
---|---|
分布式 | 集中式 |
支持离线 | 必须联网 |
安全性高 | 安全性低 |
强大的分支管理 | 工作在一条分支 |
安装Git
目前的工作环境是Windows,为便于更换工作环境后能快速查出新环境下Git的安装,在此列出三种平台的Git安装。
- Windows
在Git官网上下载安装程序,按默认选项安装,安装完成后在开始菜单中找到"Git"->“Git Bash”,打开后弹出类似命令行窗口,说明Git安装成功! - Linux
可以试着输入git
,查看系统是否已安装Git,若未安装,如果是Debian或Ubuntu,通过sudo apt-get install git
可以直接完成Git的安装! - Mac
推荐方法是:直接从App Store安装Xcode,运行Xcode,选择菜单"Xcode"->“Preferences”,在弹出窗口中选择"Downloads"->“Command Line Tools”->"Install"即可!
以上三种平台,安装完成后,还需配置信息。在命令行中输入:
$ git config --global user.name "Your Name"
$ git config --global user.email "Your email"
其中Your Name与Your email是你的用户名与email地址,git config
命令的--global
参数表示本机器上所有的Git仓库都会使用该配置。
创建版本库
首先,在合适地方创建空目录,Windows下最好确保目录名不含中文
$ mkdir myGit
$ cd myGit
其次,把该目录变为Git可以管理的仓库
$ git init
再次,把编写的文件放在myGit目录下(或子目录),从而开始添加文件到Git仓库中
$ git add readme.txt
$ git commit -m "wrote a readme file"
远程仓库
- 创建SSH Key。Windows下打开Git Bash,创建SSH Key
$ssh-keygen -t rsa -C "youremail"
- 登录GitHub,打开"Account settings"->“SSH Keys”->“Add SSH Key”,填上任意title,在Key文本框中粘贴id_rsa.pub文件的内容->“Add Key”
常用命令
下面是使用Git时常用的一些命令,以备遗忘时查阅。
git status
查看仓库当前状态git diff
查看对文件的修改内容git add filename.xxx
将文件修改添加到暂存区stage中git commit -m "statements"
一次性把暂存区的修改提交到分支git log (--pretty=oneline)
可以查看提交历史,显示从最近到最远的提交日志,以便确定要回退到哪个版本git reset --hard HEAD^
把当前版本回退到上一个版本,上上个版本是HEAD^^
,往上100个版本写成HEAD~100
git reset --hard commitID
指定回到某个版本git reset HEAD <file>
可以把暂存区的修改撤销掉,重新放回工作区git reflog
用来查看命令历史,以便确定要回到未来的哪个版本git checkout --filename.xxx
把某文件在工作区的修改 全部撤销,让这个文件回到最近一次的git commit
或git add
时的状态git rm
用于删除一个文件git remote add orign git@github.com:yourname/myGit.git
关联一个远程库git push (-u) origin maste
把本地库的所有内推送到远程库上,-u是第一次推送master分支的所有内容,以后再推送时不用加上-ugit clone xxx
克隆一个仓库git branch
查看分支git branch <name>
创建分支git checkout <name>
切换分支git checkout -b <name>
创建并切换分支git merge <name>
合并某分支到当前分支git branch -d <name>
删除分支,-D
强行删除git log --graph
可以看到分支合并图git merge --no-ff -m "xxx" branchname
可以用普通模式合并,合并后的历史有分支,能看到曾经做过的合并,而fast forward
合并看不出曾经做过的合并git stash
常用于发现bug时把当前工作现场“储藏”起来git stash pop
用于回到工作现场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
建立本地分支与远程分支的关联
遇到的问题
- –Q:git bash中输入
npm install
响应时间较长,最终提示404
有趣的句子,哈哈,我真的希望你知道你正在干什么(https://img-blog.csdnimg.cn/20190120212937709.png)
–A:在命令行中输入npm install -g cnpm…,显示结果如下图
然后在git bash中进入工作目录,输入命令cnpm install,结果如下
cnpm官方网址http://npm.taobao.org/
十多分钟过去了,依然没反应。。。。
解决端口占用
参考地址https://www.cnblogs.com/honeywei/articles/7920629.html
解决端口占用问题之后,与使用cnpm install
的结果一样
一直没反应
,,,,,,,,,
其实这是正常的,说明app已经跑起来了,但我的Chrome迟迟不出现index.html,好奇怪啊
经历了一顿操作,浏览器终于跳出来test页面了,一直不出来是因为杀死占用9000端口号的进程后关闭了cmd命令,于是kill失效了