Git学习(二)
提高篇
 这是我自己当初学习的笔记,可能不全,这里推荐廖雪峰的的Git教程,很全面。廖雪峰的Git教程 希望对大家有所帮助。
一、分支管理
 Git每次提交后都有记录,Git把他们串成时间线,形成类似于时间轴的东西,这个时间轴就是一个分支,我们称之为master分支。在开发是往往是团队合作多人同时开发,如下图所示,因此需要多个分支,保证分支之间互不干扰。

- 分支相关指令:
| 功能 | 命令 | 
|---|---|
| 查看分支: | git branch | 
| 创建分支: | git  branch 分支名 | 
| 切换分支: | git  checkout 分支名 | 
| 删除分支: | git  branch -d 分支名 | 
| 合并分支: | git  merge 被合并的分支名 | 
| 备注: | 当前分支前有个标记“*”并且会高亮,切换分支指令在切换到不存在分支时会自动创建分支。 | 
- 查看、创建、切换分支操作

- 
合并分支 先在Dev分支下修改readme文件,并提交本地。然后切换到master分支,这时发现刚才在Dev分支下readme.txt修改的内容不存在了。此时需要将Dev分支与master分支的内容合并,此时在master分支下已经可以看到Dev修改的内容了。 

此时Dev分支已经没有用了,可以选择删除了。
注意:在删除分支时,一定要先退出要删除的分支,然后才能删除。
执行git push将仓库内容提交线上。
二、冲突的产生与解决
1. 模拟产生冲突
- 
同事下班后修改了线上仓库代码。  
- 
第二天我没有拉取线上内容,直接修改了本地仓库的内容,然后提交了线上仓库。此时提示错误,并且线上仓库并没有改变。  
2.解决冲突
- 
git提示我们需要在在此push前先执行 git pull操作。
- 
git pull提示我们已经将本地与线上仓库的冲突合并到了readme.txt文件 
- 
打开冲突文件,解决冲突  
解决方法:需要和同时(谁之前提交的)进行商量,看代码如何保留,将改好的代码重新提交即可。
- 冲突标记说明
 从<<<<<<<和======这里开始的行之间的一行(或多行)就是你在本地已经拥有的东西 ,因为HEAD指向你当前的分支或提交。=======和>>>>>>>是另一个(拉)提交引入的内容,在本例中是b2121b。 这是合并到HEAD中的提交的对象名称。
三、图形管理工具
- 
GitHub for Desktop 老牌的Git GUI管理工具,功能丰富,基本操作和高级操作都非常流畅,适合初学者。 
- 
TortoiseGit 简称tgit,中文海龟Git,适合熟悉SVN的开发人员. 
四、忽略文件
 项目中可能会有很多万年不变的文件目录,例如css、images等,或者有修改但是不想提交到远程仓库的文档,此时我们可以使用“忽略文件”机制来实现。
 忽略文件需要新建一个名为.gitignore的文件,该文件用于申明忽略文件或不忽略文件的规则,规则对当前目录及其子目录生效。
注意:该文件因为没有文件名,没发直接在windows目录下直接创建,可是通过命令行git bash来touch创建。
- 常见规则写法
 | 命令 | 功能 |
 | :---------- | :-----------------------------------------------------|
 | mtk/ | 过滤整个文件夹 |
 | *.zip | 过滤所有.zip文件 |
 | mtk/文件名.后缀名 | 过滤某个具体文件 |
 | !文件名.后缀名 | 不过滤具体某个文件,!表示不过滤某个具体文件 |
 | !mtk/文件名.后缀名 | 不过滤某个文件夹下的具体文件 |
 | 备注 | 在文件以#开头的都是注释 |
注意:.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。
- 先在本地仓库中新建一个js目录以及目录中js文件
- 依次提交本地与线上
- 新增.gitignore文件 指令:touch .gitignore

- 编写规则(根据需要编写)

- 添加pass.txt文件后再次提交线上仓库,发现线上并没有pass.txt文件,说明规则已经生效。



五、同时提交到Github和Gitee仓库
- 
注册Gitee账号,注意邮箱要和Github注册所使用的邮箱一致。 
- 
添加SSH公钥到Gitee,ssh在 Git学习(一)六、远程仓库 六、远程仓库,基于SSH篇章提到怎么使用。  
- 
输入 ssh -T git@gitee.com验证。第一次验证会让你确实是否是你本人操作,输入yes即可。 
- 
输入 git remote rm origin删除已关联的名为origin的远程库。
- 
输入 git remote add github 线上仓库地址关联github上的远程仓库
- 
输入 git remote add gitee 线上仓库地址关联gitee上的远程仓库
- 
输入 git remoter -v查看本地仓库关联的远程仓库

- 输入git push github 分支名和git push gitee 分支名分别推送到对应仓库上的对应分支上。至此完成了本地仓库同步推送到Github和Gitee上的远程仓库。
 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号