当前回答
人们必须牢记 git 的性质。 您有远程和本地分支( 不一定相同 ) 。 与其他源控制系统相比, 这可能会有点令人困惑 。
通常当您检出远程时,会创建本地副本,跟踪远程。
gitreach 将会与远程分支合作并更新您的信息 。
实际上,如果其他SWES同一个部门工作,就属于这种情况,而小型项目----一个部门----一个项目设想方案的情况很少。
您对本地分支的工作仍然完好无损 。 为了将更改带回您的本地分支, 您必须合并/ 重订远程分支的更改 。
git拉动正好就是这两个步骤(即 -- -- rebase to rebase rebase 而不是合并)
如果您的本地历史和远程历史有冲突, 您将被迫在一小块按键发布您的更改时进行合并 。
因此,这真正取决于你的工作环境的性质和使用经验。
其他回答
和差异之间的差别GIT 抓取和GIT 调可用下列假设情况解释:(记住图片比文字更响亮!
让我们举一个例子来说明您正在与团队成员一起开展一个项目。 因此,该项目将有一个主要分支, 所有贡献者都必须将该项目推到他们自己的本地仓库, 然后在这个本地分支上修改/ 添加模块, 然后推回主分支 。
那么,初次初次国家当您在本地存储库中将主项目 提前启动时, 两支分支中的两支分支将变成这样( ) 。 ( ) @ info: whatsthisA
, B
和C
是项目已完成的模块)
现在,你已经开始研究新模块(假设)D
),当你们完成D
您想要将模块推到主分支中, 但是同时发生的情况是, 您的队友之一开发了新模块E
, F
修改和修改C
.
所以现在发生的事情是 您的本地存储库 缺乏项目最初进展的背后 从而推动您对主要分支的更改 可能导致冲突 并可能导致您的模块D
发生故障。
为了避免此类问题,并与项目的最初进展平行工作,有两种方式:
1. Git Fetch-(吉特接驳-)这将下载所有对本地分支中不存在的源/主分支工程所做的更改。 并将等待 Git 合并命令应用您仓库或分支的更改 。
现在您可以仔细监视文件, 然后将其合并到仓库。 您也可以修改D
因修改而需要时C
.
2. Git Pull-(吉特拉拉) - (吉特拉拉)这将更新您的本地分支, 使用源/ 主分支, 即它实际上所做的是 Git Fetch 和 Git 的组合 。但这可能引发冲突, 因此建议使用Git Pull,
git fetch
从远程服务器将代码从远程服务器撤回到本地仓库的跟踪分支。如果您的远程服务器被命名origin
然后,这些分支将居其中;origin/
,例如,origin/master
, origin/mybranch-123
等等。这些不是你们的现树枝,而是你们的现树枝。当地当地服务器上那些分支的复制件
git pull
是否为 a 的git fetch
但当时并且,还有将跟踪分支的代码合并到您当前本地版本的该分支中。如果您尚未准备好进行该修改,只需git fetch
头一次。
Git允许在较新的承诺之后适用按时间顺序排列的旧承诺。 因此,存放库之间转移承诺的行为分为两步:
正在从远程分支复制新承诺, 复制本地副本中的此远程分支 。
(收回业务)
master@remote >> remote/origin/master@local
整合对地方分支机构的新承诺
(内购外业务)
remote/origin/master@local >> master@local
第二步有两种方法,你可以:
- 在上一个共同祖先之后,将本地分支叉到叉口,并添加与本地仓库独特的承诺平行的新承诺,通过合并承诺最终完成,关闭叉口。
- 在上一个共同祖先后插入新承诺,并重新应用本地仓库独有的承诺。
内git
术语术语,第1步是git fetch
,第2步是git merge
或git rebase
git pull
是git fetch
和git merge
您可以从远程仓库获取, 查看差异, 然后拉动或合并 。
这是被称作远程仓库的示例origin
和支派,和支派,master
跟踪远程分支origin/master
:
git checkout master
git fetch
git diff origin/master
git rebase origin master
我们简单地说:
git pull == git fetch + git merge
如果你逃跑git pull
中,您不需要将数据合并到本地数据。如果运行git fetch
这意味着你必须跑git merge
获取本地机器的最新代码。 否则, 本地机器代码不会在不合并的情况下被更改 。
所以在 Git Gui 中, 当您获取时, 您必须合并数据 。 获取本身不会在本地修改代码 。 您可以检查当您通过一次获取并查看来更新代码时, 是否更新了代码; 代码不会改变 。 然后您将合并... 您将会看到修改后的代码 。