这是 git-pull 命令,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器
程序:
您的姓名
git-pull - 从另一个存储库或本地分支获取并集成
概要
混帐 拉 [选项] [ [ ...]]]
商品描述
将远程存储库中的更改合并到当前分支中。 在其默认
模式, git pull 是 git fetch 后跟 git merge FETCH_HEAD 的简写。
更确切地说, 混帐 拉 运行 混帐 取 使用给定的参数和调用 混帐 合并 至
将检索到的分支头合并到当前分支中。 使用--rebase,它运行 混帐
变基 而不是 混帐 合并.
应该是传递给的远程存储库的名称 获取(1)。
可以命名任意远程引用(例如,标签的名称)甚至
具有相应远程跟踪分支的参考集合(例如,
refs/heads/*:refs/remotes/origin/*),但通常是远程分支的名称
库。
默认值和从“远程”和“合并”中读取
当前分支的配置由 git分支(1)--跟踪。
假设存在以下历史记录并且当前分支是“master”:
A---B---C 原点大师
/
D---E---F---G 主
^
您的存储库中的 origin/master
然后“git pull”将从远程主分支获取并重放更改,因为它
与本地主节点(即 E)分叉,直到其当前提交(C)在主节点之上,并且
在新提交中记录结果以及两个父提交的名称和日志
来自用户的描述更改的消息。
A---B---C 原点/主
/ \
D---E---F---G---H 主
参见 git合并(1) 有关详细信息,包括如何呈现和处理冲突。
在 Git 1.7.0 或更高版本中,要取消冲突合并,请使用 git reset --merge。 警告:在
旧版本的 Git,正在运行 混帐 拉 不鼓励使用未提交的更改:而
可能,它会让你处于一种可能很难退出的状态
冲突。
如果任何远程更改与本地未提交的更改重叠,合并将被
自动取消并且工作树保持不变。 通常最好获得任何本地
在拉动或藏起来之前改变工作秩序 git 存储(1)。
配置
-q, --安静
这将传递给底层 git-fetch 以抑制传输期间的报告,
和底层 git-merge 在合并期间抑制输出。
-v,--详细
将 --verbose 传递给 git-fetch 和 git-merge。
--[no-]递归子模块[=yes|on-demand|no]
此选项控制是否也应获取所有已填充子模块的新提交
(见 混帐配置(1)和 git模块(5))。 这可能是获取所需数据所必需的
用于合并子模块提交,这是 Git 在 1.7.3 中学到的一个特性。 注意结果
将不会在子模块中检出合并,必须是“git submodule update”
之后调用以使工作树与合并结果保持同步。
可选项 有关 至 合并
--提交,--不提交
执行合并并提交结果。 此选项可用于覆盖
--不提交。
使用 --no-commit 执行合并但假装合并失败并且不自动提交,
让用户有机会在之前检查并进一步调整合并结果
承诺。
--编辑,-e,--无编辑
在提交成功的机械合并之前调用编辑器以进一步编辑
自动生成的合并消息,以便用户可以解释和证明合并。 这
--no-edit 选项可用于接受自动生成的消息(这通常是
灰心)。
较旧的脚本可能取决于不允许用户编辑的历史行为
合并日志消息。 当他们运行 git merge 时,他们会看到一个打开的编辑器。 使
更容易将此类脚本调整为更新的行为,即环境变量
GIT_MERGE_AUTOEDIT 可以在它们的开头设置为 no。
--ff
当合并解析为快进时,只更新分支指针,不更新
创建合并提交。 这是默认行为。
--无-ff
即使合并解析为快进,也创建合并提交。 这是
合并带注释(也可能是签名)标签时的默认行为。
--仅 ff
拒绝合并并以非零状态退出,除非当前 HEAD 已经存在
最新或合并可以解决为快进。
--日志[= ], --无日志
除了分支名称,用一行描述填充日志消息
最多正在合并的实际提交。 也可以看看 git-fmt-合并-msg(1)。
使用 --no-log 不要从合并的实际提交中列出一行描述。
--stat, -n, --no-stat
在合并结束时显示 diffstat。 diffstat 也由
配置选项merge.stat。
使用 -n 或 --no-stat 在合并结束时不显示 diffstat。
--壁球,--无壁球
产生工作树和索引状态,就好像真正的合并发生一样(除了
合并信息),但实际上并不进行提交、移动 HEAD 或记录
$GIT_DIR/MERGE_HEAD(使下一个 git commit 命令创建合并提交)。
这允许您在当前分支的顶部创建单个提交,其效果是
与合并另一个分支相同(如果是章鱼则合并更多)。
使用 --no-squash 执行合并并提交结果。 此选项可用于
覆盖 --squash。
-s , --策略=
使用给定的合并策略; 可以多次提供以在
为了他们应该被尝试。 如果没有 -s 选项,则内置策略列表
改为使用 (混帐 合并递归 合并单个头时, 混帐 合并章鱼
除此以外)。
-X , --strategy-option=
将合并策略特定选项传递给合并策略。
--验证签名,--无验证签名
验证被合并的提交是否具有良好且可信的 GPG 签名并中止
合并以防万一。
--总结,--无总结
--stat 和 --no-stat 的同义词; 这些已被弃用,并将在
的未来。
-r, --rebase[=假|真|保留]
如果为 true,则在获取后将当前分支重新设置在上游分支的顶部。 如果
有一个对应上游分支的远程跟踪分支和
上游分支自上次提取以来已重新定位,重新定位使用该信息来
避免 rebase 非本地更改。
当设置为保留时,使用传递给 git rebase 的 --preserve-merges 选项进行重新设置
本地创建的合并提交不会被展平。
当为 false 时,将当前分支合并到上游分支中。
参见 pull.rebase,分支。 .rebase 和 branch.autoSetupRebase 中 混帐配置(1) 如果
你想让 git pull 总是使用 --rebase 而不是合并。
备注
这是一个潜在的 危险的 操作模式。 它改写了历史,这确实
当你已经发表了那段历史时,这不是好兆头。 做 而不去 使用这个选项
除非你读过 git 变基(1)仔细。
--无变基
更早地覆盖--rebase。
可选项 有关 至 正在取得
- 全部
获取所有遥控器。
-a,--追加
将获取的 ref 的 ref 名称和对象名称附加到
.git/FETCH_HEAD。 如果没有这个选项,.git/FETCH_HEAD 中的旧数据将被覆盖。
--深度=
限制从每个远程分支的尖端获取指定数量的提交
历史。 如果取到一个 浅 由 git clone 使用 --depth= 创建的存储库
选项(见 git克隆(1)),将历史加深或缩短到指定数量
提交。 不会获取深化提交的标签。
--不浅
如果源存储库完整,则将浅存储库转换为完整存储库,
消除浅存储库强加的所有限制。
如果源存储库较浅,则尽可能多地获取,以便当前
存储库与源存储库具有相同的历史记录。
--更新浅
默认情况下,当从浅存储库中获取时, git fetch 拒绝引用
需要更新 .git/shallow。 此选项更新 .git/shallow 并接受此类引用。
-f,--强制
在规划婴儿食品行业的工艺要求时,安全性和可靠性是工艺设计中最重要的方面。 混帐 取 与: refspec,它拒绝更新
本地分行除非远程分支它获取的是一个后代
的. 此选项会覆盖该检查。
-k, --保持
保留下载的包。
--无标签
默认情况下,指向从远程存储库下载的对象的标签
获取并存储在本地。 此选项禁用此自动标记跟随。 这
可以使用遥控器指定遥控器的默认行为。 .tagOpt 设置。
参见 混帐配置(1)。
-u, --update-head-ok
默认情况下 混帐 取 拒绝更新对应于当前的头部
分支。 此标志禁用检查。 这纯粹是为了内部使用 混帐 拉
沟通 混帐 取,除非你正在实现你自己的 Porcelain 你
不应该使用它。
--上传包
给定后,要从中获取的存储库由 混帐 取包,
--exec= 传递给命令以指定非默认路径
命令在另一端运行。
- 进展
默认情况下,进度状态报告在标准错误流上
附加到终端,除非指定了 -q。 此标志甚至强制进度状态
如果标准错误流未定向到终端。
作为提取或拉取操作来源的“远程”存储库。 这个
参数可以是 URL(请参阅下面的 GIT URL 部分)或远程名称
(请参阅下面的遥控器部分)。
指定要获取哪些引用以及要更新哪些本地引用。 当没有秒
出现在命令行上,要获取的引用是从远程读取的。 。拿来
变量代替(见 获取(1))。
的格式参数是一个可选的加号 +,后跟源引用
, 后跟冒号 :, 后跟目标引用. 结肠可以是
省略时是空的。
标签表示与 refs/tags/ 相同:参考/标签/ ; 它请求获取
到给定标签的所有内容。
匹配的远程引用被获取,如果不是空字符串,
匹配它的本地参考使用快进. 如果可选的加号 + 是
使用时,即使不会导致快进更新,也会更新本地引用。
备注
当您要获取的远程分支已知被倒带和重新定位时
通常,预计它的新提示不会是其以前的后裔
提示(上次获取时存储在远程跟踪分支中)。 你
想要使用 + 号来表示需要非快进更新
对于这样的分支。 没有办法确定或声明一个分支将被
在具有此行为的存储库中可用; 拉动用户必须
知道这是一个分支的预期使用模式。
备注
列出多个是有区别的直接上 混帐 拉
命令行并有多个遥控器。 .fetch 中的条目
配置为并运行一个 混帐 拉 没有任何命令
明确的参数。 s 在命令行中明确列出
获取后总是合并到当前分支中。 换句话说,如果你
列出多个远程引用, 混帐 拉 将创建一个八达通合并。 在另一
手,如果你没有列出任何明确的命令行参数, 混帐
拉 将获取所有它在遥控器中找到。 。拿来
仅配置和合并第一个在当前分支中找到。
这是因为从远程引用制作章鱼很少完成,同时保持
通过获取多个远程头一次跟踪多个远程头通常是
有用。
GIT 网址
通常,URL 包含有关传输协议的信息、传输协议的地址
远程服务器,以及存储库的路径。 根据传输协议,一些
可能缺少此信息。
Git 支持 ssh、git、http 和 https 协议(另外还可以使用 ftp 和 ftps
for fetching 和 rsync 可用于获取和推送,但这些效率低下且
已弃用; 不要使用它们)。
本机传输(即 git:// URL)不进行身份验证,应与
谨慎使用不安全的网络。
以下语法可以与它们一起使用:
· ssh://[用户@]主机.xz[:端口]/path/to/repo.git/
· git://host.xz[:port]/path/to/repo.git/
· http[s]://host.xz[:port]/path/to/repo.git/
· ftp[s]://host.xz[:port]/path/to/repo.git/
· rsync://host.xz/path/to/repo.git/
另一种类似 scp 的语法也可以与 ssh 协议一起使用:
· [用户@]host.xz:path/to/repo.git/
仅当第一个冒号前没有斜杠时才能识别此语法。 这有助于
区分包含冒号的本地路径。 例如本地路径 foo:bar 可以
指定为绝对路径或 ./foo:bar 以避免被误解为 ssh url。
ssh 和 git 协议还支持 ~username 扩展:
· ssh://[用户@]主机.xz[:端口]/~[用户]/path/to/repo.git/
· git://host.xz[:port]/~[user]/path/to/repo.git/
· [user@]host.xz:/~[user]/path/to/repo.git/
对于本地存储库,Git 本身也支持,以下语法可能是
用过的:
· /path/to/repo.git/
· 文件:///path/to/repo.git/
这两种语法大部分是等价的,除非在克隆时,前者意味着
--本地选项。 看 git克隆(1) 详情。
当 Git 不知道如何处理某个传输协议时,它会尝试使用
偏僻的- 远程助手,如果存在的话。 要显式请求远程助手,
可以使用以下语法:
· ::
在哪里可以是路径、服务器和路径,或者是任意的类似 URL 的字符串
被调用的特定远程助手识别。 看 gitremote 助手(1)
细节。
如果有大量名称相似的远程存储库并且您想使用
它们的不同格式(这样您使用的 URL 将被重写为
工作),您可以创建表单的配置部分:
[网址“ ”]
代替 =
例如,与此:
[网址“git://git.host.xz/”]
代替 = host.xz:/path/to/
代替 = 工作:
像“work:repo.git”或“host.xz:/path/to/repo.git”这样的 URL 将被重写为任何
将 URL 设为“git://git.host.xz/repo.git”的上下文。
如果您只想重写 URL 以进行推送,您可以创建一个配置部分
形成:
[网址“ ”]
pushInsteadOf =
例如,与此:
[网址“ssh://example.org/”]
PushInsteadOf = git://example.org/
像“git://example.org/path/to/repo.git”这样的 URL 将被重写为
“ssh://example.org/path/to/repo.git”用于推送,但拉取仍将使用原始
网址。
遥控器
可以使用以下名称之一代替 URL 作为争论:
· Git 配置文件中的一个远程:$GIT_DIR/config,
· $GIT_DIR/remotes 目录中的文件,或
· $GIT_DIR/branches 目录中的一个文件。
所有这些还允许您从命令行中省略 refspec,因为它们每个
包含 git 默认使用的 refspec。
命名 远程 in 配置 文件
您可以选择提供您之前使用配置的遥控器的名称
git-远程(1) 混帐配置(1) 甚至通过手动编辑 $GIT_DIR/config 文件。 网址
这个远程的将用于访问存储库。 这个遥控器的 refspec 将是
当您未在命令行上提供 refspec 时默认使用。 中的条目
配置文件将如下所示:
[偏僻的 ” ”]
网址 =
推网址 =
推=
取=
这仅用于推送。 它是可选的,默认为.
命名 文件 in $GIT_DIR/遥控器
您可以选择在 $GIT_DIR/remotes 中提供文件名。 此文件中的 URL
将用于访问存储库。 此文件中的 refspec 将用作默认值
当您未在命令行上提供 refspec 时。 这个文件应该有以下内容
格式:
URL:上述URL格式之一
推:
拉:
推送:行被使用 混帐 推 和拉:线被使用 混帐 拉 和 混帐 取.
可以为额外的分支映射指定多个 Push: 和 Pull: 行。
命名 文件 in $GIT_DIR/分支
您可以选择在 $GIT_DIR/branches 中提供文件名。 此文件中的 URL
将用于访问存储库。 此文件应具有以下格式:
#
是必须的; # 是可选的。
根据操作,git 将使用以下参考规范之一,如果您不这样做
在命令行上提供一个。 是 $GIT_DIR/branches 中此文件的名称
和默认为主。
git fetch 使用:
参考/头/ :参考/头/
git push 使用:
头:参考/头/
合并 策略
合并机制(git merge 和 git pull 命令)允许后端 合并 策略
使用 -s 选项进行选择。 有些策略也可以采取自己的选择,这可以是
通过给 -X git merge 和/或 git pull 的参数。
解决
这只能解析两个头(即当前分支和你拉的另一个分支
from) 使用三路合并算法。 它试图仔细检测交叉合并
歧义,通常被认为是安全和快速的。
递归
这只能使用 3 路合并算法解决两个头。 当超过
一个可用于三路合并的共同祖先,它创建了一个合并树
共同祖先并将其用作三路合并的参考树。 这有
已报告导致较少的合并冲突,而不会导致测试错误合并
在取自 Linux 2.6 内核开发历史的实际合并提交上完成。
此外,这可以检测和处理涉及重命名的合并。 这是默认的
拉或合并一个分支时的合并策略。
- 递归 策略可以采取以下选项:
我们的
此选项强制通过偏爱自动解决冲突的大块头 我们的
版本。 与我方不冲突的另一棵树的变化是
反映到合并结果中。 对于二进制文件,取全部内容
从我们的角度。
这不应与 我们的 合并策略,这甚至不看
另一棵树所包含的内容。 它丢弃了另一棵树所做的一切,
声明 我们的 历史包含了其中发生的一切。
他们的
这是相反的 我们的.
忍耐
有了这个选项, 合并递归 花费一些额外的时间来避免误合并
有时由于不重要的匹配行(例如,来自不同
职能)。 当要合并的分支出现严重分歧时使用此选项。 也可以看看
混帐差异(1)——耐心。
差异算法=[耐心|最小|直方图|迈尔斯]
告诉 合并递归 使用不同的差异算法,这有助于避免
由于不重要的匹配行(例如大括号来自
不同的功能)。 也可以看看 混帐差异(1) --diff 算法。
忽略空间更改,忽略所有空间,忽略空间在 eol
将具有指示类型的空白更改的行视为未更改
为了三路合并。 空格更改与一行的其他更改混合在一起
不被忽视。 也可以看看 混帐差异(1) -b、-w 和 --ignore-space-at-eol。
· 如果 其 版本只对一行引入空格更改, 我们的 版本是
用过的;
· 如果 我们的 版本引入了空格更改,但 其 版本包括一个
实质性的变化, 其 使用版本;
· 否则,合并以通常的方式进行。
重新归一化
这将运行文件的所有三个阶段的虚拟签出和签入,当
解决三路合并。 此选项旨在合并分支时使用
使用不同的干净过滤器或行尾规范化规则。 见“合并
具有不同签入/签出属性的分支” git 属性(5)
细节。
不重新归一化
禁用重新规范化选项。 这覆盖了merge.renormalize
配置变量。
重命名阈值=
控制用于重命名检测的相似性阈值。 也可以看看 混帐差异(1)
-M。
子树[= ]
此选项是一种更高级的形式 子树 战略,战略使
关于合并时必须如何移动两棵树以使其相互匹配的猜测。
相反,指定的路径带有前缀(或从头开始剥离)以使
两棵树的形状相匹配。
章鱼
这解决了有两个以上头的情况,但拒绝进行复杂的合并
需要手动解决。 它主要用于捆绑主题分支
齐头并进。 这是拉取或合并多个时的默认合并策略
一个分支。
我们的
这解决了任意数量的头,但合并的结果树总是
当前分支头的,有效地忽略来自所有其他分支的所有更改。
它旨在用于取代旧的侧枝开发历史。 笔记
这与 -Xours 选项不同 递归 合并策略。
子树
这是一种修改后的递归策略。 合并树 A 和 B 时,如果 B 对应
A、B的子树首先调整为匹配A的树结构,而不是
读取同一级别的树。 这个调整也是对普通的
祖先树。
使用使用三路合并的策略(包括默认、 递归),如果有变化
在两个分支上进行,但后来在其中一个分支上恢复,该更改将是
出现在合并结果中; 有些人觉得这种行为令人困惑。 它的发生是因为
执行合并时只考虑头部和合并基,而不是
个人承诺。 因此,合并算法将恢复的更改视为没有
完全更改,并替换更改后的版本。
DEFAULT 行为
人们经常使用 git pull 而不提供任何参数。 传统上,这是
相当于说 git pull origin。 但是,当配置分支时。 .remote 是
在分行时出现,使用该值而不是原点。
为了确定使用哪个 URL 来获取,配置的值
偏僻的。 .url 被咨询,如果没有任何这样的变量,URL 上的值:
`$GIT_DIR/remotes/ 中的行文件被使用。
为了确定要获取哪些远程分支(并可选地存储在
远程跟踪分支)当命令在没有任何 refspec 参数的情况下运行时
命令行,配置变量远程的值。 .fetch 被咨询,
如果没有, $GIT_DIR/remotes/ 文件被咨询和它的`拉:`
线被使用。 除了 OPTIONS 部分中描述的 refspec 格式之外,您还可以
可以有一个如下所示的 globbing refspec:
参考/头/*:参考/遥控器/起源/*
globbing refspec 必须有一个非空的 RHS(即必须存储在
远程跟踪分支),其 LHS 和 RHS 必须以 /*. 以上规定
所有远程分支都使用 refs/remotes/origin/ 中的远程跟踪分支进行跟踪
同名下的层次结构。
获取后确定合并哪个远程分支的规则有点涉及,在
为了不破坏向后兼容性。
如果在 git pull 的命令行中给出了明确的 refspecs,它们都会被合并。
当命令行上没有给出 refspec 时, git pull 使用来自
配置或 $GIT_DIR/remotes/ . 在这种情况下,以下规则适用:
1.如果分支。 当前分支的 .merge 配置存在,即
合并的远程站点上的分支的名称。
2. 如果 refspec 是 globbing 的,则不会合并任何内容。
3. 否则合并第一个 refspec 的远程分支。
示例
· 更新您克隆的存储库的远程跟踪分支,然后合并一个
其中的一个进入你当前的分支:
$ git pull, git pull 原点
通常合并的分支是远程仓库的HEAD,但选择是
由分行决定。 .远程和分支。 .merge 选项; 看 混帐-
配置(1) 详情。
· 合并到当前分支下的远程分支:
$ git pull origin 下一个
这会在 FETCH_HEAD 中临时保留 next 的副本,但不会更新任何
远程跟踪分支。 使用远程跟踪分支,同样可以通过
调用获取和合并:
$ git 获取来源
$ git 合并原点/下一个
如果您尝试了导致复杂冲突的拉动并且想要重新开始,您
可以恢复 混帐 重置.
使用 onworks.net 服务在线使用 git-pull