跳转到内容

Git/高级

来自维基教科书,开放世界中的开放书籍
< Git

本教程介绍了一些 Git 更高级的多用户功能。对于单用户功能,请参阅单开发者基础

检出远程仓库

[编辑 | 编辑源代码]

检出远程 Git 仓库的一种方法是

$ git clone ssh://[email protected]:port/remote/path/to/repo

现在你拥有了该仓库的本地副本。你可以使用在单开发者基础中介绍的所有命令。完成后,你可能希望再次将你的更改签入中心仓库。

首先,你需要执行 git pull 操作,以防仓库在此期间发生了更改,你可能需要将你的分支与仓库合并。合并后,你可以使用 git push 将你的更改发送到仓库

$ git pull /remote/path/to/repo

或者

$ cd repo
$ git pull

然后

$ git push

检出本地仓库

[编辑 | 编辑源代码]

git clone 也适用于本地仓库

$ git clone /local/path/to/repo

检出远程分支

[编辑 | 编辑源代码]

你可能还想检出远程分支,对其进行操作,然后签入你的本地分支。首先,你可能需要知道哪些分支可用

$ git branch -r
$ git remote show origin

获取远程分支(拉入本地分支)

$ git pull origin remoteBranchName:localBranchName

更新远程分支(将本地分支推入远程分支)

$ git push origin localBranchName:remoteBranchName

这假设你有一个名为“origin”的远程仓库。你可以使用 git remote 来检查这一点。

如果你想从远程分支创建本地分支,请使用

$ git checkout -b mylocalbranch origin/maint

删除远程分支的操作如下

$ git push origin :remoteBranchNameToDelete

以下命令同步分支 $ git fetch origin

Git 允许你指定一些标签,以便专注于历史记录中的某些内容[1]

要添加带注释的标签,请执行以下操作

$ git tag -a mytag

或者

$ git tag -a mytag my-branch

要添加轻量级标签,请执行以下操作

$ git tag mytag

要强制覆盖现有标签,请执行以下操作

$ git tag -f mytag HEAD

要显示以前的标签,请执行以下操作

$ git tag 

标签可以被推送到远程仓库,方法是

$ git push --tags

要将仓库定位到标签,请执行以下操作

git checkout tags/0.3.4

标签与分支

[编辑 | 编辑源代码]

标签和分支都指向一个提交,因此它们都是特定哈希的别名,通过使用它们可以节省时间,因为不需要输入哈希。

标签和分支之间的区别在于,分支始终指向开发线顶端,并且在推送新的提交时会更改,而标签不会更改。因此,标签更适合用于“标记”特定版本,并且该标签将始终停留在该版本上,通常不会更改。

实际上,标签用于指定软件版本控制,并且以数字命名(例如:v1.0.2)。


Example of branches with tags.
带有标签的分支示例。

创建和应用补丁

[编辑 | 编辑源代码]

要为 origin 和 master 之间的更改创建纯文本补丁(系列),请使用

$ git format-patch origin/master

要应用提交的纯文本补丁(系列),请使用

$ git apply --stat  P1.txt  #see the stats, how much will the path change?
$ git apply --check P1.txt  #check for problems
$ git am < P1.txt           #apply the patches in the correct order

参考文献

[编辑 | 编辑源代码]
  1. https://git.js.cn/book/en/Git-Basics-Tagging
华夏公益教科书