有一个项目a,已经完成了基本的功能,测试下来是稳定的,接下来想增长新的功能,并用对其完善,但这个过程当中可能会出现bug,甚至影响到全局php
这个时候,咱们就但愿保存一个稳定版本的文件,另外复制一份文件进行改进,这样即使遇到问题也能够回到稳定的状态,并能够进行对比来进行dbug
在学习版本控制工具前,方法是复制文件夹,而后在新的文件夹中进行修改,可是明显这样会形成多余的文件夹,管理极为混乱linux
因此就须要咱们的版本分支管理工具git登场了git
从官网下载对应的exe进行安装便可github
只要这边改为第一个,保证安全性,其余就一路next就能够了windows
$ git config --global user.name "name" //填名字 $ git config --global user.email 123@163.com //邮箱
在项目文件夹中右键菜单,Git Bash here
或者在其余地方Git Bash here以后,命令行里输入cd 路径名转到项目文件夹中安全
$ git init //初始化仓库
下一步就要把文件所有提交到仓库的暂存区工具
$ git add . //能够把.改为要提交的文件名来单独提交
不过在这以前,先要肯定哪些文件不要提交
经过IDE(不能直接在文件夹右键新建)(我用的vscode,在命令行输入$ Code .gitignore)新建一个.gitignore文件,在里面写要忽略的文件学习
//忽略规则 • bin/: 忽略当前路径下的bin文件夹,该文件夹下的全部内容都会被忽略,不忽略 bin 文件 • /bin: 忽略根目录下的bin文件 • /*.c: 忽略 cat.c,不忽略 build/cat.c • debug/*.obj: 忽略 debug/io.obj,不忽略 debug/common/io.obj 和 tools/debug/io.obj • **/foo: 忽略/foo, a/foo, a/b/foo等 • a/**/b: 忽略a/b, a/x/b, a/x/y/b等 • !/bin/run.sh: 不忽略 bin 目录下的 run.sh 文件 • *.log: 忽略全部 .log 文件 • config.php: 忽略当前路径的 config.php 文件
而后要把暂存区的文件里提交到正式的仓库里测试
$ git commit -m '这里能够加提交的注释'
若是.gitignore文件没有在提交前创建,或者不当心提交了不想要提交的文件,那能够经过下面的命令行进行取消ui
$ git reset 文件名 取消暂存区的文件 $ git rm -r --cached 文件名 移除正式仓库里的文件,加上--cached就不会把本地的文件删除
提交以后,或者未提交时,均可以经过这句来查看仓库目前的状态
是否有未跟踪的文件,或者暂存区里有尚为正式提交的文件,都会有所显示
$ git status
若是工做目录显示是干净的,也就完成了咱们的初次提交
On branch master nothing to commit, working directory clean
在提交中,可能会遇到这样的问题
warning: LF will be replaced by CRLF
windows中的换行符为 CRLF, 而在linux下的换行符为LF
因此在执行add . 时出现提示
解决方法:
$ git config --global core.autocrlf false //禁用自动转换
$ git log $ git log -a //更详细
在github的我的主页中,新创建一个仓库
复制仓库页面的url
在Git Bash中执行
$ git clone url
这样就会在Git Bash所打开的地方,创建出一个新的文件夹,里面会有网上仓库的内容(若是在创建的时候有勾选Readme说明文件的话,就能够看到它)
而后把稳定版里的全部文件复制到这个新文件中
进行以前初次提交的操做
$ git add . $ git commit -m '' $ git commit -a -m '' //把上面两句简写到一块儿
而后进行仓库的远程提交
$ git push
输入帐号密码后,即把文件提交到了github上的仓库中
回到咱们最初问题上来
在保存了稳定版本到仓库后
咱们能够建立一个分支
$ git branch fen //建立分支 $ git checkout fen //切换到新的这个分支上 $ git checkout -b fen //也能够两句合写
而后就能够对其中的文件进行修改
能够随时切换回主线,git会把文件都还原成稳定版的状态
$ git checkout master
修改了文件内容以后
若是还没有提交暂存,想查看对比仓库里的文件的修改之处 :
$ git diff
若是已经提交到暂存,想查看对比仓库里的文件的修改之处 :
$ git diff –staged
若是此时又对文件内容作了修改
再使用下面这句
$ git diff
显示的就是文件和暂存区内文件的对比(不是仓库了)
$ git status -s M //已经提交到暂存的修改文件 M //尚为提交到暂存的修改文件 MM //已经提交到暂存,并在暂存后继续修改的文件 A //新提交到暂存的文件 ?? //尚为跟踪的文件
查看分支状况
$ git branch * fen master
在修改完这个分支以后,测试为稳定,但愿将其合并到主线上,进行版本更新
$ git checkout master //切换回主线 $ git merge fen //把支线合并过来 $ git merge -d fen //删除此分支
至此,就完成了一次工做流程
目前用到的都只是我的的版本管理,没有涉及多人协做
更具体的学习仍是要参照官方文档
https://git-scm.com/book/zh/v...