使用git(三)远程操作

来源:互联网 发布:java swing怎么用 编辑:程序博客网 时间:2024/06/05 07:35

整理自极客学院git教程系列地址

一、主要命令

  • git clone:获取远程仓库
  • git fetch :获取远程仓库的所有分支及数据
  • git pull :git fetch 和 git merge 的组合
  • git push :把本地数据推送到远程仓库

二、获取远程仓库

用github作为远程仓库。首先注册github账号,配置基本信息(略过),创建一个github仓库repository。
1.然后在本地使用“git clone github仓库地址”来克隆远程仓库,接着就可以在本地对该仓库做一些修改。
这里写图片描述
2.如果远程仓库的数据有更新,那么我们再本地要获取远程仓库的最新更新,就使用“git fetch”来获取远程苍鹭的更新信息。在初次使用“git fetch”来获取更新时,HEAD指针与master指针并没有指向最新的那个提交,此时内容没有更新,我们需要将HEAD指针与master指针指向最新的那个提交来获取更新。
这里写图片描述
使用“git merge origin/master”来合并分支
这里写图片描述

三、提交数据到远程仓库

我们再本地分支中,修改master.txt文件,并将其提交到历史记录中。同时,在远程仓库中,也修改同一个文件。此时,如果使用“git push”向服务器端提交本地数据,会提示报错。因为远程中做了修改使文件更新,有本地没有的新数据,如果提交,会将那些更新的数据覆盖掉。
这里写图片描述
命令行工具提示我们使用“git pull”来拉取服务器上的新数据并merge。由于两处修改存在conflict,需要编辑文件删除不需要的内容来解决冲突。
这里写图片描述
冲突解决完后,便可以提交文件了。然后再使用“git push”来将数据推送到服务器。
这里写图片描述
此时远程仓库中便有了本地的更新
这里写图片描述

四、pull Request 流程

有时候,我们将别人的github项目fork到自己的仓库中,然后git clone到本地,做一些修改。如果我们继续像前面那样,使用“git push”来提交本地的数据,则会将这些修改都推送到自己的远程仓库中。如果我们希望将修改的数据提交到fork的那个仓库,为开源做贡献,此时就需要“pull request”来完成。

一般,我们需要做pull request时,都会新建一个功能分支来承载我们的修改

git checkout -b feature

做完修改后,将文件提交到历史记录中

git commit -m "add some feature"

然后使用“git push origin feature”来将feature分支推送到项目下(自己的远程仓库),这样我们在自己的远程仓库中就有了feature分支的内容。
然后在创建一个pull request,将修改提交给fork的那个仓库,如果对方觉得修改没有问题,就可以merge分支来合并更新。
做完 pull request后,如果有新的更新,则需要不断的重复“pull request”流程来提交代码。但是,我们需要获取fork的那个项目的最新更新,而本地分支连接的是自己的远程仓库,我们使用“git pull”或者“git fetch”并不能获取我们需要的数据。这时,我们就需要使用“git remote”命令

git remote add upstream http://...

upstream: 自己起的远程仓库的名字
http://.. : fork 的仓库的地址

  • 如果使用origin,则是从自己的仓库进行git fetch和git push
  • 如果使用upstream,则是从fork的那个进行git fetch 和 git push
    当然,upstream是不能进行git push 的,因为没有权限,只能走pull request流程。

切换回master分支,使用”git fetch upstream”来获取仓库的最新内容,
使用“git merge upstream/master” 来合并分支,此时,本地的代码就和远程仓库是一样的了。

0 0