您的位置:首页 > 运维架构 > Linux

Linux分布式版本控制工具(git)

2016-01-15 11:14 585 查看
一,安装 Git

sudo apt-get install git-core

按下回车后输入密码,即可完成 Git 的安装。

二,创建代码仓库

首先应该配置一下你的身份,这样在提交代码的时候 Git 就可以知道是谁提交的了,命令如下所示:

git config --global user.name "Tony"

git config --global user.email "tony@gmail.com"

配置完成后你还可以使用同样的命令来查看是否配置成功, 只需要将最后的名字和邮箱地址去掉即可



然后我们就可以开始创建代码仓库了,仓库(Repository)是用于保存版本管理所需信息的地方,所有本地提交的代码都会被提交到代码仓库中,如果有需要还可以再推送到远

程仓库中。这里我们尝试着给 BroadcastBestPractice 项目建立一个代码仓库。先进入到BroadcastBestPractice 项目的目录下面



然后在这个目录下面输入如下命令:

git init

很简单吧!只需要一行命令就可以完成创建代码仓库的操作



仓库创建完成后,会在 BroadcastBestPractice 项目的根目录下生成一个隐藏的.git文件夹,这个文件夹就是用来记录本地所有的 Git 操作的,可以通过 ls -al 命令来查看一下,



如果你想要删除本地仓库,只需要删除这个文件夹就行了

提交本地代码

代码仓库建立完之后就可以提交代码了,其实提交代码的方法也非常简单,只需要使用add 和 commit 命令就可以了。add 是用于把想要提交的代码先添加进来,而 commit 则

是真正地去执行提交操作。比如我们想添加 AndroidManifest.xml 文件,就可以输入如下命令:

git add AndroidManifest.xml

这是添加单个文件的方法,那如果我们想添加某个目录呢?其实只需要在 add 后面加上目录名就可以了。比如将整个 src 目录下的所有文件都进行添加,就可以输入如下命令:

git add src

可是这样一个个地添加感觉还是有些复杂, 有没有什么办法可以一次性就把所有的文件都添加好呢?当然可以,只需要在 add 的后面加上一个点,就表示添加所有的文件了,命令如下所示:

git add .

现在 BroadcastBestPractice 项目下所有的文件都已经添加好了,我们可以来提交一下了,输入如下命令:

git commit -m "First commit."

注意在 commit 命令的后面我们一定要通过-m 参数来加上提交的描述信息,没有描述信息的提交被认为是不合法的。这样所有的代码就已经成功提交了!

查看修改内容



可以看到,Git 提醒我们 MainActivity.java 这个文件已经发生了更改,那么如何才能看到更改的内容呢?这就需要借助 diff 命令了,用法如下所示:

git diff

这样可以查看到所有文件的更改内容,如果你只想查看 MainActivity.java 这个文件的更改内容,可以使用如下命令:

git diff src/com/example/providertest/MainActivity.java



其中,减号代表删除的部分,加号代表添加的部分。从图中我们就可以明显地看出,书的价格由 22.85 被修改成了 55.55。

撤销未提交的修改

修改就可以使用 checkout 命令,用法如下所示:

git checkout src/com/example/providertest/MainActivity.java

执行了这个命令之后,我们对 MainActivity.java 这个文件所做的一切修改就应该都被撤销了。重新运行 git status 命令检查一下



可以看到,当前项目中没有任何可提交的文件,说明撤销操作确实是成功了。不过这种撤销方式只适用于那些还没有执行过 add 命令的文件,如果某个文件已经被

添加过了,这种方式就无法撤销其更改的内容,我们来做个试验瞧一瞧。首先仍然是将 MainActivity 中那本书的价格改成 55.55,然后输入如下命令:

git add .

这样就把所有修改的文件都进行了添加,可以输入 git status 来检查一下



现在我们再执行一遍 checkout 命令,你会发现 MainActivity 仍然是处于添加状态,所修改的内容无法撤销掉。这种情况应该怎么办?难道我们还没法后悔了?当然不是, 只不过对于已添加的文件我们应该先对其取消添加,然后才可以撤回提交。取消添加使用的是 reset 命令,用法如下所示:

git reset HEAD src/com/example/providertest/MainActivity.java

然后再运行一遍 git status 命令,你就会发现 MainActivity.java 这个文件重新变回了未添加状态,此时就可以使用 checkout 命令来将修改的内容进行撤销了

查看提交记录

git log

由于目前我们只执行过一次提交,所以能看到的信息很少



可以看到,每次提交记录都会包含提交 id、提交人、提交日期,以及提交描述这四个信息。那么我们再次将书价修改成 55.55,然后执行一次提交操作,如下所示:

git add .

git commit - m "Change price."

现在重新执行 git log 命令



当提交记录非常多的时候,如果我们只想查看其中一条记录,可以在命令中指定该记录的 id,并加上-1 参数表示我们只想看到一行记录,如下所示:

git log 2e7c0547af28cc1e9f303a4a1126fddbb704281b -1

而如果想要查看这条提交记录具体修改了什么内容, 可以在命令中加入-p 参数, 命令如下:

git log 2e7c0547af28cc1e9f303a4a1126fddbb704281b -1 –p



分支的英文名是 branch,如果想要查看当前的版本库当中有哪些分支,可以使用 git branch –a 这个命令



git branch version1.0

这样就创建了一个名为 version1.0 的分支, 我们再次输入 git branch –a 这个命令来检查一下



master 分支的前面有一个*号,说明目前我们的代码还是在 master 分支上的,那么怎样才能切换到version1.0 这个分支上呢?其实也很简单,只需要使用 checkout 命令即可,如下所示:

git checkout version1.0



git checkout master

git merge version1.0

仅仅这样简单的两行命令,就可以把在 version1.0 分支上修改并提交的内容合并到master 分支上了。当然,在合并分支的时候还有可能出现代码冲突的情况,这个时候你就

需要静下心来慢慢地找出并解决这些冲突,Git 在这里就无法帮助你了。最后,当我们不再需要 version1.0 这个分支的时候,可以使用如下命令将这个分支删除掉:

git branch -D version1.0

git push origin master

其中 origin 部分指定的是远程版本库的 Git 地址,master 部分指定的是同步到哪一个分支上,上述命令就完成了将本地代码同步到 https://github.com/exmaple/test.git 这个版本库的 master 分支上的功能。知道了将本地的修改同步到远程版本库上的方法, 接下来我们看一下如何将远程版本库上的修改同步到本地。Git 提供了两种命令来完成此功能,分别是 fetch 和 pull,fetch 的语法规则和 push 是差不多的,如下所示:

git fetch origin master

执行这个命令后,就会将远程版本库上的代码同步到本地,不过同步下来的代码并不会合并到任何分支上去, 而是会存放在到一个 origin/master 分支上, 这时我们可以通过 diff命令来查看远程版本库上到底修改了哪些东西:

git diff origin/master

之后再调用 merge 命令将 origin/master 分支上的修改合并到主分支上即可,如下所示:

git merge origin/master

而 pull 命令则是相当于将 fetch 和 merge 这两个命令放在一起执行了, 它可以从远程版本库上获取最新的代码并且合并到本地,用法如下所示:

git pull origin master
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息