什么是git
git是一个代码版本控制工具,可以用来控制代码版本的变化。
安装git
下载git的安装包
安装好后在任何目录下右键都有git bash here 这能作为验证git安装成功的方法。
安装好后要执行下面几个命令。
配置个人信息:
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
配置编辑工具:
git config --global core.editor vim
生成SSH密匙:
ssh-keygen -t rsa -C "你的邮箱"
gitee的使用
本次操作主要以gitee(中国版的github)为例,记录git工具的使用于安装方法,github的使用原理相同,部分操作不同。
在gitee中创建仓库:
注册登录后即可看到创建仓库的选项,在右上角也有选项。
创建仓库 页面如下所示:
按照个人需求填写后即可创建仓库。
下载代码
在仓库中点击克隆/下载
复制上述内容在想要复制代码的地方点击git bash here 粘贴上述代码执行即可。
上述.git属于隐藏文件,要打开显示隐藏文件才能查看。
.git文件的内容如图中所示
可以用git status命令来查看git的变化
用git add 文件名(可以直接用git add .)将工作空间的改动存入缓冲区。
用git commit -m '注释'将缓冲区的内容放入本地仓库。该命令想要成功需要先注册好个人信息。配置个人信息的代码已在上文给出。
用git log查看仓库中的所有版本。
使用SSH下载代码
使用前要进行SSH配置
执行上述方式获得公钥后,点击下面的位置添加公钥
完成后即可使用SSH进行克隆
分支
git支持分支管理,除了使用主分支外,还可以使用开发分支来更有条理的开发程序。
查看本地分支的命令:
git branch -a
创建分支:
git branch 分支名
切换分支:
git checkout 分支名
如上图所示:高亮的分支切换到了dev上面,工作空间也会切换为该分支的内容
在dev分支上添加一个dev文件,上传本地仓库后创建了一个新版本
创建的分支情况如下图所示:
合并分支:
例如将上面的dev分支合并到master分支。
本质上是master指针移动到dev上
Y型结构的分支合并
上面回退maste分支新建了一个master.txt文件并上传本地仓库。
这时分支情况如下图所示:
使用下面命令查看可得分支情况
这时master分支已经修改,那接下来应该如何合并两个分支?
使用合并分支指令:
这时会弹出一个编辑器可以写入新版本的注释。
指令会创建一个新版本用于合并两个分支并移动master指针到新版本。
这时dev的指针还指在原来的版本上,一般在合并后如果dev分支要继续使用就要用在逻辑上使dev分支合并回去,实际上采用的是下面这种方法:
切换到dev后
git merge master即可。
如何处理分歧
如上图所示,当两处修改相隔太远时并不会相互影响
而当两处修改太近时就会发生合并失败的问题
这时就需要手动处理冲突,打开修改的文件如图所示:
文件中会有表明冲突的位置,自行修改即可。
然后再上传本地
分支删除
安全删除命令:
git branch -d
强制删除命令:
git branch -D
从远程仓库更新和上传
更新远程仓库命令:
git push
上传本地分支命令:
git push --set-upstream origin 分支
上传后本地仓库:
本地分支dev已上传,在本地保留一个远程仓库的副本。
别的仓库远程克隆下来后会是下图所示的情况:
本地仓库中并没有新的分支,只有这个分支的远程副本。
要创造本地分支使用下面这个命令:
git fetch origin 分支:分支
使用后效果如下图所示:
做完这些之后要pull以下检查有没有建立正常的链接。
这就是没有建立正常的连接,需要输入上图提示中的信息。
更新本地仓库命令:
git pull
上述图是对命令git fetch 的说明。master分支有一个远程仓库的副本在本地叫:origin/master。
上述两个命令:
git fetch origin/分支
git merge origin/分支
合在一起就是命令git pull
本地仓库和远程仓库都更新了版本怎么上传?
无法上传,需要先拷贝到本地副本合并后再上传,如上图所示
远程仓库没有git工具无法完成合并,因此想要合并就要拷贝到本地仓库将两个版本合并再上传。
使用命令:git pull就可以直接进行合并。
上述过程仍会出现合并冲突的问题,根据上文的方法手动修改再上传即可。
代码回退问题
如上图查询状态后会有提示可以使用回退命令回退工作区状态,上述提示的命令是git restore
上图中有各种回退命令
一般是不会用到回退命令的,因为可以本地修改在上传覆盖,回退使用的大多数情况是用户反馈遇到bug后再clone一个版本后进行本地回退修改。
忽略文件
在代码上传时不用所有文件都上传,比如一些生成的执行文件。
这时就可以配置忽略文件.gitignore,在其中添加要忽略的文件。
这个不用手动配置,在仓库创建的时候就有选项可以一键配置
注意:忽略文件应该在项目一创建的时候就该配置好
提交本地仓库
以上将的都是从gitee上clone下来的仓库,那么本地创建的一个项目怎么提交到gitee呢?
在创建仓库界面什么都不选,创建仓库会进入以下界面:
根据如下指示在本地项目进行操作即可上传本地仓库。
mkdir test-warehouse-2
cd test-warehouse-2
git init
touch README.md
git add README.md
git commit -m "first commit"
git remote add origin https://gitee.com/sheng-jiaming/test-warehouse-2.git
git push -u origin "master"
上述代码是示范,请根据具体给出的命令使用。
这里介绍一个网站可以练习git命令
另外还推荐一个软件:sorcetree,其中的history功能很强,有助于git的使用。
追加:
使用了github后发现由于vpn的关系无法克隆。
在研究了半个晚上后发现了如下解决方法(需要vpn)
参考上述博客的第二个方法即可解决。
但是任然无法解决vm中ubuntu 的问题,又研究了半个上午,拼尽全力无法战胜,遂妥协用gitee作为中转站实现linux上git管理(无奈之举)
下面介绍如何将github克隆的项目上传gitee:
首先从github上下载的仓库是有.git文件夹的,这意味着不能使用上述方式提交本地仓库。
方法:
克隆到本地后,在gitee新建一个仓库,不要点任何选项。
复制仓库url,使用提交本地仓库中的连接远程仓库命令进行连接。
git remote add origin https://gitee.com/sheng-jiaming/test-warehouse-2.git
上述命令中仓库url要改成自己的。
push仓库后输入账户密码即可完成。