1

为什么使用git

有一个项目a,已经完成了基本的功能,测试下来是稳定的,接下来想增加新的功能,并用对其完善,但这个过程中可能会出现bug,甚至影响到全局

这个时候,我们就希望保存一个稳定版本的文件,另外复制一份文件进行改进,这样即便遇到问题也可以回到稳定的状态,并可以进行对比来进行dbug
在学习版本控制工具前,方法是复制文件夹,然后在新的文件夹中进行修改,但是明显这样会造成多余的文件夹,管理极为混乱

所以就需要我们的版本分支管理工具git登场了

安装

从官网下载对应的exe进行安装即可

clipboard.png
只要这边改成第一个,保证安全性,其他就一路next就可以了

配置

$ 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文件没有在提交前建立,或者不小心提交了不想要提交的文件,那可以通过下面的命令行进行取消

$ 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...


夜行风
1k 声望50 粉丝

字节跳动持续招人中~