笔者最近进行开发过程中,所有参与者的代码需要通过 git 上传到远端仓库中,不同的模块对应不同的 git 分支,不同模块的数据需要从远端仓库中获取。这里记录下笔者从远端仓库中获取分支数据,进行修改,最后重新上传同步分支数据的过程。
1. 添加远程仓库信息 —— git remote add/remove
用户可通过 git remote add 命令添加一个远程仓库的信息。一般远端仓库首页的右上角都包含有 clone 按钮,点击即可获得仓库对应的 url .
git remote add name url //添加一个远程仓库,命名为 name ,其对应资源地址由 url 指定
如下命令即添加了一个远程仓库,并将其命名为 test . 之后,可以直接通过名字 test 来进行远程仓库的管理工作。当用户使用 git clone 命令获取一个远程仓库数据时,git 会将该远程仓库默认命名为 origin,用户可以通过 git clone 的 -o 命令指定远程仓库的名字 。
git remote add test https://github.com/schacon/simplegit-progit //添加远程仓库 test,其 url 如命令所示 git clone -o test https://github.com/schacon/simplegit-progit //下载远程仓库数据至本地,远程仓库名被命名为 test
对应的,用户可以通过 git remote remove 来删除远程仓库的信息。
git remote remove test //删除 test 对应的远程仓库的信息
注意 git remote add 命令仅仅配置了远程仓库的 url 等信息,并没有获取对应的仓库数据。用户可以通过 git remote 命令查看已经添加了远程仓库的信息。
git remote //显示当前已有的所有仓库的名称 git remote -v //显示详细的仓库信息,包括仓库名称和对应的 url 等
2. 获取远程仓库的数据 —— git fetch
在设置好远程仓库的信息后,即可将远程仓库的数据拉取到本地。这里主要通过 git fetch 命令获取数据。
git fetch test //直接使用时,获取 test 对应远程仓库的所有数据(即所有分支的数据) git fetch test test1 //加入分支名参数,表示获取 test 对应远程仓库的 test1 分支的数据
取回本地的数据均通过 仓库名/分支名 的方式使用,如上述获取的分支信息即为 test/test1.注意,git fetch 命令仅将分支数据取回到本地但并不会自动切换到上述分支数据中。
图示为笔者通过 git fetch 命令取回 origin 仓库对应的 MD5sum 分支的数据,其本地数据名称为 origin/MD5sum .
注意,git fetch 仅取回本地相对于上一次获取时远端仓库新增的修改,故而 git fetch 命令并不一定会获得整个 origin/MD5sum 文件,假如本地仓库之前已经获取过 origin/MD5sum 分支的数据,则再次运行 git fetch 只会获得远端仓库新增的修改,而不是整个项目。
3.本地创建和查看分支 —— git checkout/branch
在获取数据后,需要进行切换进而使用上述分支的数据,并以此为基础进行编辑工作。有两种选择,一种是将上述获取的数据融合到当前分支中,一种是开始一个新的本地分支,并以此分支为基础进行对应的修改。笔者这里选择的是第二种,即开始一个新的分支,并在此分支上进行的修改( 在第一次获取该远程仓库分支时,由于之前本地不存在相应的数据,因此获取的是该分支所有的数据,而不是增量,比较适合第二种情况 )。开始/切换新的分支可以使用 git checkout 命令,其最后一个参数可用于指定分支的开始点。
git checkout name //切换到分支 name git checkout -b name //创建并切换到 name 分支 git checkout -b name origin/test //切换到 bame 分支,并设置开始点为 origin/test 分支
如笔者通过如下命令切换到新的 MD5sum 分支,并以远程仓库获取的 origin/MD5sum 分支数据作为开始点。(若想在当前分支上进行修改,则需要通过 git merge或 git rebase 将 origin/MD5sum 数据合并到当前本地分支中,再进行操作,这里不做介绍)
git checkout -b MD5sum origin/MD5sum //创建新分支,并以 origin/MD5sum 作为开始点
在创建新分支的同时,该分支还同时被设定"追踪"( track )远端分支 origin/MD5sum。建立上述追踪关系后, git pull / push 命令的默认远端仓库分支即为 origin/MD5sum.
用户可以通过 git branch 命令查看目前已有的分支情况,并对分支进行管理。注意, git branch 命令只能创建分支,并不会自动进行分支的切换。用户总是需要通过 git checkout 命令手动切换所在分支。
git branch //查看本地分支, * 表示当前所在分支,使用 -v 参数则会显示各分支最后一次提交 git branch -a //查看本地和远端仓库的所有分支 git branch test //新建名为 test 的本地分支,-d 参数表示删除某个分支
笔者通过 git branch 查看的输出如下,可以看到此时笔者已经位于本地 MD5sum 分支下。
4.修改当前分支的信息 —— git status/add/commit
此时可在本地对 MD5sum 分支的信息进行修改和提交。简单而言,可以通过 git status 命令跟踪各个文件的状态,通过 git add 命令将修改后的文件加入待提交状态,通过 git commit 将待提交状态的修改提交,具体的 git 命令和含义可以参考笔者的另一篇文章 git 学习记录—— git 中的仓库、文件状态、修改和提交操作等。这里即注意本地的 git commit 都是将修改提交保存在本地,若想要数据与远程仓库同步,还需要将本地修改提交到远程仓库。
5.提交数据到远端仓库 —— git push
在本地修改数据并提交后,还需要将本地的修改推送至远端仓库的对应分支上。git 获取远端仓库时,会将远端仓库完整的项目拷贝至本地的计算机上,故而 git 中的绝大多数操作都是基于本地文件和资源,从而使得用户在离线情况下仍能以较快的速度对本地的项目数据库进行操作,如 git commit 命令即将本地的修改保存在本地仓库中,用户需在网络环境下进行本地与服务器端的同步。用户需要通过 git push 命令将本地修改推送到远端仓库的特定分支中。
可以使用 git push 将本地分支数据上传到远端仓库特定分支中,git push 命令的形式如下所示。
git push 远端仓库 x 本地分支 y : 远端分支 z //将本地的分支 y 推送到远端仓库 x 中的分支 z
在笔者的例子中,即将本地分支 MD5sum 的修改推送到远端仓库 origin 对应的 MD5sum 分支中,命令如下所示。
git push origin MD5sum:MD5sum //将本地分支 MD5sum 推送到 origin 对应的远端仓库的 MD5sum 分支中
git push 还有个特殊的写法,表示删除远端仓库的对应分支,写法与其基本用法一致,但本地分支名为空。
git push origin :MD5sum //删除 origin 对应的远端仓库的 MD5sum 分支
参考资料: