深入Git开发(Git远程仓库之push推送和update更新操作详解)

上一章Git教程请查看:Git执行更改、查看更改和提交更改
这一章我们来讨论Git操作远程仓库的push推送和update更新操作。
一、git push推送操作上一章中userB通过使用amend操作修改了他的最后一次提交,他准备推送更改。Push操作将数据永久存储到Git仓库,成功执行推送操作后,其他开发人员可以看到UserB的更改。
我们执行git log命令以查看提交详细信息。
【深入Git开发(Git远程仓库之push推送和update更新操作详解)】在执行推操作之前,如果他想查看其更改,他可以使用git show命令查看其更改。
UserB对如果对自己的改变感到满意,那么可以使用推送自己的改变。

$ git push origin master

上面的更改已成功推送到仓库,现在其他开发人员可以通过执行克隆或更新操作来查看其更改。
二、git update更新操作1、修改现有功能
UserA执行克隆操作并找到一个新文件string.c,他想知道是谁将此文件添加到仓库中以及出于什么目的,因此他可以执行git log命令来查看。
git clone gituser@git.server.com:project.git

克隆操作将在当前工作目录中创建一个新目录,他将目录更改为新创建的目录,并执行git log命令。
$ cd project/$ git log

观察日志后他意识到UserB添加了文件string.c来实现基本的字符串操作,他对杰里的代码感到好奇,因此他在文本编辑器中打开string.c并立即发现一个错误,在my_strlen函数中UserB没有使用常量指针,因此他决定修改UserB的代码。修改后的代码可以使用diff命令查看:
$ git diff

经过测试后,他提交了更改。
$ git status -s$ git add string.c$ git commit -m 'Changed pointer'$ git log

userA使用git push命令来推送他的更改。
$ git push origin master

2、新增功能
同时UserB决定实现字符串比较功能,因此他修改了string.c,修改后文件使用diff查看:
$ git diff

经过测试后准备推动自己的更改。
$ git status -s$ git add string.c$ git commit -m "Added new function"

在进行推送操作之前,他通过查看日志消息来验证提交。
$ git log

如果对这些变化感到满意,那么就可以推送自己的更改了。
$ git push origin master

但是Git不允许UserB推动他的改变,因为Git确定远程仓库和UserB的本地仓库不同步,因此他可能会丢失该项目的历史。为了避免这种混乱Git使该操作失败,现在UserB必须先更新本地仓库,然后才能更新自己的更改。
3、获取最新更改
UserB执行git pull命令以将其本地仓库与远程仓库同步。
$ git pull

拉取操作后,UserB检查日志消息,并查找具有提交ID x的UserA提交的详细信息:
$ git log

现在UserB的本地仓库已与远程仓库完全同步,这样他就可以安全地推动自己的更改。
$ git push origin master

    推荐阅读