【Git】之Git使用案例

本帖主要介绍一下Git在实际项目开发中的使用流程,包括克隆、暂存、提交、推送、拉取、分支、冲突解决等,暂时还不包括回退。java


一、首先须要安装Git,下一步下一步就行,这里就不说了。值得一提的是,若是Git安装成功,当你在某个文件夹下点击鼠标右键的时候,弹出的菜单中会有一项是Git Bash Here,点击这一项就能够弹出Git的控制台,咱们对Git的全部操做都会在这个控制台中进行:git



二、而后咱们须要在GitHub或OSChina上建立一个项目,这里我是在OSChina的码云上建立了一个项目,命名为TestGit:ssh


这里须要强调的是,若是咱们让咱们的本地仓库链接远程仓库,就必须有一个SSH KEY。咱们能够去电脑当前用户文件夹中查看有没有一个 .ssh 的文件夹,若是没有则须要生成一个SSH KEY,方法以下:学习

(1)在Git控制台中输入 ssh-keygen -t rsa -C "xxx@xx.com",引号里面的是你的邮箱地址,回车后就建立了一个SSH KEY,此时你就能够在你的当前用户文件夹中看到多了一个 .ssh 文件夹。这个文件夹中有两个文件:id_rsa(私钥)id_rsa.pub(公钥),咱们须要的是 id_rsa.pub 公钥文件。fetch

(2)获得公钥文件以后,打开GitHub或OSChina中的Settings选项,其中有一项是SSH KEY,咱们须要在这里建立咱们的SSH KEY,标题任意,公钥中填入id_rsa.pub文件中的内容,点击肯定便可。spa



三、在电脑中新建一个文件夹用来放本地仓库,这里我用的是我电脑中的 E:\GitWorkSpace 文件夹。.net


四、在 E:\GitWorkSpace 文件夹下空白区域右键点击 Git Bash Here 打开 Git 控制台,接下来咱们就须要将远程仓库中的项目克隆到本地电脑中了。版本控制


五、为了克隆一个项目,咱们须要它在远程仓库中的SSH地址,即下图所示区域,选中SSH,点击最右边的 复制 按钮便可复制其SSH地址blog



六、在控制台中输入 git clone git@git.oschina.net:itgungnir/TestGit.git ,点击回车开始克隆仓库,克隆成功后如图所示:事件


此时咱们到 E:\GitWorkSpace 目录中,就能够看到一个TestGit的文件夹了,打开TestGit,咱们能够看到一个隐藏的 .git 文件夹和一个readme文件。


七、进入TestGit项目:在控制台中输入 cd TestGit便可,此时进入的是master分支,即主分支,如图:


八、在克隆仓库的时候,默认就建立了一个名为 origin 的远程链接,咱们能够经过 git remote -v来查看:



九、在远程仓库中建立一个 dev 分支

(1)点击下图所示的区域,点击 管理分支 


(2)能够看到,如今项目中只有 master 这一个分支,点击左侧的 新建分支 按钮新建一个分支


(3)在 新分支名称 中输入dev,点击建立分支


(4)建立完成后,就能够看到,多了一个 dev 分支


十、咱们须要将远程仓库中的 dev 分支拉取到本地仓库中

(1)因为远程仓库的分支进行了更改,所以咱们须要先更新远程链接:在控制台中依次输入git remote show origin git remote updategit fetch语句,以下图:


能够看到,在执行了 git remote update 语句以后,提示咱们有一个dev分支没有更新,使用 git fetch 语句进行更新。

(2)更新完成以后,将远程仓库中的dev分支复制到本地:使用 git checkout -b dev origin/dev,如图:


这条语句的做用是将 origin 中的 dev 分支复制到本地,本地的分支也叫 dev。


十一、在团队协做的时候,远程仓库中只有 master 和 dev 两个分支就能够了,也就是说,咱们在本地须要创建新的分支编写本身的模块,写完以后合并到 dev 分支,而后推送到远程仓库中便可


十二、在本地建立本身的分支:使用 git checkout -b wzy语句建立一个名为 wzy 的本地分支:



1三、在本地 wzy 分支中进行代码的编写。例如:咱们在TestGit项目下新建一个 a.java 文件,在 a.java 文件中写入一些代码,而后提交到本地仓库中

(1)在TestGit中新建一个 a.java 文件:


(2)在Git控制台中使用 git status命令查看当前项目中文件的修改状态(哪一个文件被改变了)


能够看到,a.java 被改变了,并且显示为红色,意思是尚未进行暂存(暂存以后会变成绿色)

(3)对 a.java 进行暂存,使用 git add a.java命令:


若是没有提示任何信息,则表示暂存成功了。

(4)将暂存信息提交到本地仓库,使用 git commit -m "add a.java"命令:


提交成功后,会提示 1 file changed ,表示一个文件被修改后提交了。

(5)此时咱们再次调用 git status命令查看状态,就能够看到没有任何文件被修改的提示:



1四、以上全部的文件操做都是在 wzy 分支上进行的,如今咱们想将 wzy 分支合并到 dev 分支上

(1)注意,merge 命令表示的是将参数(wzy)分支合并到当前分支,所以咱们须要先切换到 dev 分支中,使用git checkout dev 命令:


(2)若是直接用 merge 命令,会直接将 wzy 分支删除,这个叫作 Fast Feature,咱们还想在合并以后查看 wzy 分支的信息,就须要中止 Fast Feature 功能,所以须要添加 --no-ff 。中止 Fast Feature 功能以后,会在分支合并点上建立一个新的 commit ,所以咱们还须要添加一个提交说明(-m)。综合以上,该命令是:git merge --no-ff -m "merge wzy" wzy ,以下图:


(3)合并成功以后,wzy 分支就没用了,咱们可使用 git branch -d wzy命令来删除这个分支,删除后从新使用 git branch 命令来查看全部分支,发现 wzy 分支已经被删除:



1五、接下来就是推送到远程仓库了。若是咱们如今推送,是确定成功的,由于如今只有咱们本身在操做 dev 分支,但我想给你们演示一下冲突的解决,因此,咱们须要去远程仓库进行一些修改。

打开远程仓库中的 TestGit 项目,切换到 dev 分支,而后建立一个 a.java 文件并写入一些数据,点击 提交 按钮提交到 dev 分支,回到 dev 分支后发现多了一个 a.java 文件:





1六、回到控制台,尝试进行推送

(1)使用 git push origin dev命令将改变推送到远程仓库的 dev 分支中,会发现报错,缘由是其他人在你将远程仓库克隆到本地以后的这段时间内对远程仓库dev 分支中的项目进行了更改,即咱们本地仓库中的项目不是最新版本的项目,须要从远程仓库拉取最新版本


(2)调用 git pull命令从远程仓库中拉取项目的最新版本,发现仍然报错,缘由是文件冲突,冲突文件是 a.java


(3)当遇到冲突的时候,咱们有两种解决方案:第一是在文件系统中打开这个文件进行修改;第二是直接在Git控制台中进行更改。调用 vi a.java命令对 a.java 文件进行修改,会看到跳转到了这样一个界面:


在这个界面中,按 D能够删除一行,按 A 能够开启编辑,按 ESC能够退出当前状态,输入 :wq 能够保存并退出这个页面。使用这些操做对文件进行修改,修改为咱们想要的样子,而后保存退出便可。

另外咱们能够看到,两个版本的文件中冲突的内容被 <<<<<<< 和 >>>>>>> 两种符号括了起来,两个版本的内容被 ======= 符号分隔开了,咱们只须要在这个区域内修改,而后删掉这三种符号便可。

修改完成以后的样子如图所示:


ESC退出编辑状态,输入 :wq 命令保存当前文件状态并退出,就回到了控制台页面:



1七、冲突解决完成以后须要再次暂存、提交以后才能再次推送

(1)查看当前状态,发现 a.java 文件没有被暂存提交:


(2)对 a.java 文件进行暂存和提交,而后再次查看状态,发现没有须要提交的了:



1八、如今就能够再次推送了:


回到远程仓库中查看,能够看到 a.java 文件的提交事件变为了 conflict fixed ,并且文件内容也被改变了:




以上是一个操做 Git 进行版本控制的小DEMO,由于我是初学者,因此确定会有些地方理解的不正确,但愿你们提出宝贵的意见,让我能够学习进步,谢谢你们!