小白文 初识git-版本分支管理及远程仓库提交
为什么使用git
有一个项目a,已经完成了基本的功能,测试下来是稳定的,接下来想增加新的功能,并用对其完善,但这个过程中可能会出现bug,甚至影响到全局
这个时候,我们就希望保存一个稳定版本的文件,另外复制一份文件进行改进,这样即便遇到问题也可以回到稳定的状态,并可以进行对比来进行dbug
在学习版本控制工具前,方法是复制文件夹,然后在新的文件夹中进行修改,但是明显这样会造成多余的文件夹,管理极为混乱
所以就需要我们的版本分支管理工具git登场了
安装
从官网下载对应的exe进行安装即可
只要这边改成第一个,保证安全性,其他就一路next就可以了
配置
$ git config --global user.name "name" //填名字 $ git config --global user.email [email protected] //邮箱
初次提交
在项目文件夹中右键菜单,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文件没有在提交前建立,或者不小心提交了不想要提交的文件,那可以通过下面的命令行进行取消
$ 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
在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...