Steve's Blog

Talk is cheap, show me the code.

0%

我的git使用教程2

Git

为仓库创建一个分支(branch)

现在我们有个提交过几次的git仓库,如果我们想在给我们的项目加点测试的东西,而又不想留一份原始不被影响的代码。传统的做法是复制项目,创建一个副本项目,在副本项目中进行测试,这样原来的项目不会受到影响。
这样看似不错,但是万一我们觉得测试代码不错,想要把它放进原始项目中,我们又不得不把测试代码复制到原始项目中(测试副本要不断进行新的开发),多来几次,万一其中有次出现了错误而没有发现,那修改就很麻烦了。
不过不用担心,git提供了另一个很有用的功能——分支(branch)。使用它能多层次、用户进行开发,十分便于管理且提升了效率。版本控制软件的好处就是你可以回到任何一个之前的开发版本中,而分支功能能很好在不影响稳定代码的情况下,允许我们进行更多操作,快来学习一下吧。分支的建立详细参见Git分支 - 分支的新建与合并

1.在git bash中输入

1
git checkout -b develop	//创建并切换到develop

这句话等价于
1
2
git branch develop	//创建develop分支
git checkout develop //切换到develop分支

我们现在处于develop分支中,与原来的master分支相对应,develop就是一个git分支,我们可以在develop分支中对代码进行各种修改,添加,删除操作,提交后(这个不能忘记),这些操作只会修改develop分支中的内容,而对主分支master不会造成任何影响。如果修改出现了问题,想要回到之前的master分支,只需要输入
1
git checkout master	//回到master主分支

就可回到主分支了。
2.如果在develop中开发了一段时间中,觉得代码已经稳定了,想要将develop分支合并到主分支去,那么git也提供合并操作。具体做法是:切换到主分支(不要忘记)
1
git checkout master	//回到master主分支

合并分支
1
git merge develop	//合并master和develop

这样master分支和develop分支就合并到一起了,之前在develop分支开发的版本仍然存在,但是如果觉得develop版本已经没用了,以后不会再用到它,那么可以使用删除操作
1
git branch -d develop	//删除develop分支

为项目添加.gitignore文件

虽然上面的方法能帮助我们成功的将项目托管到GitHub上,但是总会遇到一些不完全如我们愿的事情。

![生成.gitigore文件之前](https://github.com/StephenHuge/Markdown_Pic/blob/master/%E6%88%91%E7%9A%84Git%E6%95%99%E7%A8%8B/gitignore之前.jpg?raw=true)

如图所示,我们把一个在eclipse上完成的项目上传到GitHub上。但是发现项目中的一些不想或者不必要上传的文件或文件夹也被上传了,例如其中的bin文件夹是存放由.java文件编译成的.class文件的地方,.class文件是虚拟机执行的文件,所以这是一个不必要上传的文件夹。事实上,如图中的bin文件夹、.setting文件夹、.classpath文件和.project文件都是不必要上传的。
怎么样能不上传这些文件和文件夹呢?一个不错的答案是每次使用git add 的时候手动添加文件盒文件夹,把这些文件不添加就行了。这可能在文件比较少的时候可行,如果遇到一个较大的项目,动辄几百个文件,手动添加就太耗费精力了,而且也没有必要。
其实Git已经给我们提供成熟的工具——.gitignore 文件,只要在.gitignore 文件中添加忽略路径就能达到有选择性的上传文件了,一起来学习一下。
在项目文件夹下打开git bash,输入:
1
touch .gitignore    //生成.gitigore文件

之后.gitignore文件就由Git自动生成了,打开.gitignore 文件,我以上面图中的项目为例,在里面添加如下字段:

bin/
.settings
.classpath
.project

这样上面提到的文件和文件夹都可以被过滤掉了。之后继续输入:

1
2
3
4
git rm -r --cached .//清空缓存      
git add .//重新提交
git commit -m "update .gitignore"
git push

效果如图:

![生成.gitigore文件之后](https://github.com/StephenHuge/Markdown_Pic/blob/master/%E6%88%91%E7%9A%84Git%E6%95%99%E7%A8%8B/gitignore之后.jpg?raw=true)

具体过滤规则

撤销未提交的修改

例如对README.md文件进行了修改,之后发现提交不必要,使用

1
git checkout -- README.md

则能取消修改,回到之前文件未修改的状态。

参考文章

[1] 如何创建.gitignore文件,忽略不必要提交的文件
[2] git更新.gitignore后如何提交