编辑推荐: |
本文来自csdn,本文主要介绍一下Git在实际项目开发中的使用流程,包括克隆、暂存、提交、推送、拉取、分支、冲突解决等,暂时还不包括回退。 |
|
1、首先需要安装Git,下一步下一步就行,这里就不说了。值得一提的是,如果Git安装成功,当你在某个文件夹下点击鼠标右键的时候,弹出的菜单中会有一项是Git
Bash Here,点击这一项就可以弹出Git的控制台,我们对Git的所有操作都会在这个控制台中进行:
2、然后我们需要在GitHub或OSChina上创建一个项目,这里我是在OSChina的码云上创建了一个项目,命名为TestGit:
这里需要强调的是,如果我们让我们的本地仓库连接远程仓库,就必须有一个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 公钥文件。
(2)得到公钥文件之后,打开GitHub或OSChina中的Settings选项,其中有一项是SSH
KEY,我们需要在这里创建我们的SSH KEY,标题任意,公钥中填入id_rsa.pub文件中的内容,点击确定即可。
3、在电脑中新建一个文件夹用来放本地仓库,这里我用的是我电脑中的 E:\GitWorkSpace 文件夹。
4、在 E:\GitWorkSpace 文件夹下空白区域右键点击 Git Bash Here 打开
Git 控制台,接下来我们就需要将远程仓库中的项目克隆到本地电脑中了。
5、为了克隆一个项目,我们需要它在远程仓库中的SSH地址,即下图所示区域,选中SSH,点击最右边的
复制 按钮即可复制其SSH地址
6、在控制台中输入 git clone?git@git.oschina.net:itgungnir/TestGit.git
,点击回车开始克隆仓库,克隆成功后如图所示:
此时我们到 E:\GitWorkSpace 目录中,就可以看到一个TestGit的文件夹了,打开TestGit,我们可以看到一个隐藏的
.git 文件夹和一个readme文件。
7、进入TestGit项目:在控制台中输入 cd TestGit即可,此时进入的是master分支,即主分支,如图:
8、在克隆仓库的时候,默认就创建了一个名为 origin 的远程连接,我们可以通过 git remote
-v来查看:
9、在远程仓库中创建一个 dev 分支:
(1)点击下图所示的区域,点击 管理分支?
(2)可以看到,现在项目中只有 master 这一个分支,点击左侧的
新建分支 按钮新建一个分支
(3)在 新分支名称 中输入dev,点击创建分支
(4)创建完成后,就可以看到,多了一个 dev 分支
10、我们需要将远程仓库中的 dev 分支拉取到本地仓库中:
(1)由于远程仓库的分支进行了更改,因此我们需要先更新远程连接:在控制台中依次输入git
remote show origin 、 git remote update 、 git fetch语句,如下图:
可以看到,在执行了 git remote update 语句之后,提示我们有一个dev分支没有更新,使用
git fetch 语句进行更新。
(2)更新完成之后,将远程仓库中的dev分支复制到本地:使用 git
checkout -b dev origin/dev,如图:
这条语句的作用是将 origin 中的 dev 分支复制到本地,本地的分支也叫 dev。
11、在团队协作的时候,远程仓库中只有 master 和 dev 两个分支就可以了,也就是说,我们在本地需要建立新的分支编写自己的模块,写完之后合并到
dev 分支,然后推送到远程仓库中即可。
12、在本地创建自己的分支:使用 git checkout -b wzy语句创建一个名为 wzy
的本地分支:
13、在本地 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命令查看状态,就可以看到没有任何文件被修改的提示:
14、以上所有的文件操作都是在 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 分支已经被删除:
15、接下来就是推送到远程仓库了。如果我们现在推送,是肯定成功的,因为现在只有我们自己在操作 dev
分支,但我想给大家演示一下冲突的解决,所以,我们需要去远程仓库进行一些修改。
打开远程仓库中的 TestGit 项目,切换到 dev 分支,然后创建一个 a.java 文件并写入一些数据,点击
提交 按钮提交到 dev 分支,回到 dev 分支后发现多了一个 a.java 文件:
16、回到控制台,尝试进行推送:
(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 命令保存当前文件状态并退出,就回到了控制台页面:
17、冲突解决完成之后需要再次暂存、提交之后才能再次推送:
(1)查看当前状态,发现 a.java 文件没有被暂存提交:
(2)对 a.java 文件进行暂存和提交,然后再次查看状态,发现没有需要提交的了:
18、现在就可以再次推送了:
回到远程仓库中查看,可以看到 a.java 文件的提交事件变为了 conflict fixed ,而且文件内容也被改变了:
以上是一个操作 Git 进行版本控制的小DEMO,希望可以给大家带来帮助。
|