Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 我如何确保我的本地分支跟踪远程在没有额外提交的情况下是相同的?_Git_Github_Branch_Tracking - Fatal编程技术网

Git 我如何确保我的本地分支跟踪远程在没有额外提交的情况下是相同的?

Git 我如何确保我的本地分支跟踪远程在没有额外提交的情况下是相同的?,git,github,branch,tracking,Git,Github,Branch,Tracking,我真的很困惑,为什么我的分支机构还没有更新。我认为git fetch从源代码获取所有远程分支及其增量信息 即使在返回到develope、删除分支并重复这些步骤之后,问题仍然会重复。我做错了什么?我只是想确定一下,他们的,但即使我这样做了 $ cd my/repo $ git checkout develop $ git fetch origin $ git checkout -b branch origin/branch $ git pull origin HEAD CONFLICT (cont

我真的很困惑,为什么我的分支机构还没有更新。我认为git fetch从源代码获取所有远程分支及其增量信息

即使在返回到develope、删除分支并重复这些步骤之后,问题仍然会重复。我做错了什么?我只是想确定一下,他们的,但即使我这样做了

$ cd my/repo
$ git checkout develop
$ git fetch origin
$ git checkout -b branch origin/branch
$ git pull origin HEAD
CONFLICT (content): Merge conflict in folder/file.ext
Auto-merging folder/file.ext
Automatic merge failed; fix conflicts and then commit the result.
git状态显示folder/file.ext已被修改,并希望我提交更改。我完全不明白为什么要做出改变。我只想让origin/branch与origin完全一样,在本地,在一个名为相同的跟踪分支中


这是如何实现的?

如果要确保相同名称的远程和本地分支相同,则需要从远程获取最新的更改(如果有),或者将本地的最新提交(如果有)推送到远程。为此,您需要在pull命令中指定分支名称,而不是使用HEAD git pull源分支名称

如果要确保在提取远程分支中可用的最新代码时没有额外的提交,则可能应该修复将远程分支提取到本地分支后可能发生的冲突。您可以使用gitdiff命令来实现这一点。然而,Git使解决冲突变得更容易,但是如果您特别不需要额外的提交,那么您可以修复冲突行,然后拉取


我认为git fetch会从源站获取所有远程分支及其增量信息-是的,你是对的,但它会在获取信息时停止,并且不会合并这些更改,除非你执行git合并或git pull=git fetch+git合并。

我想我知道我想要什么了。首先,检查git日志或浏览Github上的远程分支名称,并在分支中找到最新的提交,比如abc123。。。这是杂烩

$ git checkout --theirs folder/file.ext

我现在有一个本地分支机构名称,它在精确的时间点跟踪源/分支机构名称,与源/分支机构名称完全相同的提交哈希,没有差异/合并/重新基,也没有额外的合并提交被推送到远程repo以继续。

尝试只使用git pull而不使用任何参数,看看使用git是否能获得更好的结果pull origin HEAD指示pull脚本:1从原点取回;2.获取与您的源代码/主代码相同的源代码的最新提交;3合并,也就是说,可能将原始/主数据合并到您的分支中。这显然不是你想要的。你能试着重复上面的步骤,但用git pull origin branch代替原来的命令吗?当我有一个新的本地分支和git push origin HEAD时,会创建并跟踪远程分支,所以我假设git pull origin HEAD的想法相反。当我尝试改为git pull源分支时,我得到了完全相同的冲突,迫使我区分、解决冲突并提交。我仍然不明白为什么我不能在本地获取远程分支的确切内容。@TimBiegeleisen使用HEAD或branchname都没有关系;结果是相同的,冲突和合并提交。请参阅下面我的新解决方案。develope已经从我还不想合并的其他更改中发展而来。基本上,我想从branchname上停止的地方开始,然后推动合并,我知道git pull=git fetch+git merge。当我执行git pull源分支名称时,我不清楚为什么要求我解决冲突并提交。我想从分支名称位于原点的确切状态开始在本地处理分支名称,而不创建新的合并提交,也不确定git为什么强制我创建合并提交。如果解决冲突,则必须创建提交以记录所做的更改。如果你没有任何冲突,你可以选择
$ git co master
$ git fetch
$ git pull origin master
$ # remove local branch if you have one, losing changes if any!
$ git branch -D branch_name
$ git checkout abc123
Note: checking out 'abc123...'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

git checkout -b new_branch_name

HEAD is now at abc123... commit message here

$ git checkout -b branch_name
$ git branch --set-upstream-to=origin/branch_name
Branch branch_name set up to track remote branch branch_name from origin by rebasing
$ git pull origin/branch_name