Answers:
假设master是您要替换的本地分支,而“ origin / master”是您要重置为的远程分支:
git reset --hard origin/master
这--hard
会将您的本地HEAD分支更新为与origin / master相同的修订版,并将此更改也同步到索引和工作空间中。
git reset
默认情况下将重新指向您当前的分支并同步索引。--soft
将跳过更新索引,--hard
也将同步工作空间。我自己的经验是--hard
大部分时间都在使用,除非我想撤消上一次提交(只是git reset HEAD^
)
git fetch origin remote_branch
master
这很简单,只需三个步骤:
git branch -d local_branch
git fetch origin remote_branch
git checkout -b local_branch origin/remote_branch
git branch -D local_branch
如果您的分支未合并,则可能需要执行第一步。
git branch -D <branch-name>
git fetch <remote> <branch-name>
git checkout -b <branch-name> --track <remote>/<branch-name>
git help branch
关于的内容--track
。When creating a new branch, set up branch.<name>.remote and branch.<name>.merge configuration entries to mark the start-point branch as "upstream" from the new branch. This configuration will tell git to show the relationship between the two branches in git status and git branch -v. Furthermore, it directs git pull without arguments to pull from the upstream when the new branch is checked out.
我在答案中修复了此命令。感谢您提出这一点。
git status
,它将在关联本地分支时报告本地分支位于远程分支之前还是之后。此外,如果您已经将分支设置为track ,则可以git pull
(或push
)代替全部。git pull <remote> <branch>
<remote/branch>
用远程分支替换所有内容; 但是,只有在同一提交中,本地分支才会打开:
git reset --hard origin/some-branch
或者,获取最新从远程分支机构信息并替换所有内容:
git fetch origin some-branch
git reset --hard FETCH_HEAD
顺便说一句,如果需要,您可以清除尚未提交的未跟踪文件和目录:
git clean -fd
git clean
命令为我做。git reset hard origin/master
不要清除未跟踪的文件。谢谢!
用遥控器替换当前本地分支的最安全,最完整的方法:
git stash
git merge --abort
git rebase --abort
git branch -M yourBranch replaced_yourBranch
git fetch origin yourBranch:yourBranch
git checkout yourBranch
该stash
行将保存您尚未提交的更改。该branch
行将您的分支移动到其他名称,以释放原始名称。的fetch
行检索遥控器的最新副本。该checkout
行将原始分支重新创建为跟踪分支。
或作为bash函数:
replaceWithRemote() {
yourBranch=${1:-`git rev-parse --abbrev-ref HEAD`}
git stash
git merge --abort
git rebase --abort
git branch -M ${yourBranch} replaced_${yourBranch}_`git rev-parse --short HEAD`
git fetch origin ${yourBranch}:${yourBranch}
git checkout ${yourBranch}
}
这会将当前分支重命名为replace_master_98d258f之类的名称。
git stash pop
在该工作流程中。如果要重新应用保存的文件。
它可以通过多种方式完成,并继续编辑此答案以传播更好的知识视角。
1)硬重置
如果您是在远程开发分支上工作,则可以将HEAD重置为远程分支上的最后一次提交,如下所示:
git reset --hard origin/develop
2)删除当前分支,然后再次从远程存储库中签出
考虑到您正在本地仓库中的develop分支上,该分支与远程/ develop分支同步,您可以执行以下操作:
git branch -D develop
git checkout -b develop origin/develop
3)中止合并
如果您处于错误的合并之间(错误地用了错误的分支),并且想要避免合并,请如下所示最新返回分支:
git merge --abort
4)中止基础
如果您处于错误的重定基准之间,则可以按如下所示中止重定基准请求:
git rebase --abort
将选择的答案是绝对正确的,但它并没有离开我了最新提交/推...
所以对我来说:
git reset --hard dev/jobmanager-tools
git pull ( did not work as git was not sure what branch i wanted)
由于我知道我想将上游分支临时设置为特定分支几个星期(与我之前切换到/签出并对其进行硬重置的分支相同)
所以重置后
git branch --set-upstream-to=origin/dev/jobmanager-tools
git pull
git status ( says--> on branch dev/jobmanager-tools
如所选说明中提供的那样,git reset是好的。但是如今,我们经常使用子模块:存储库内部的存储库。例如,如果您在项目中使用ZF3和jQuery,则很可能希望从其原始存储库中克隆它们。在这种情况下,git reset是不够的。我们需要将子模块更新为存储库中定义的确切版本:
git checkout master
git fetch origin master
git reset --hard origin/master
git pull
git submodule foreach git submodule update
git status
它与您递归地进入每个子模块的工作目录(cd)并将运行:
git submodule update
这与
git checkout master
git pull
因为子模块不是指向分支而是指向提交。
在这种情况下,当您手动签出1个或多个子模块的某个分支时,可以运行
git submodule foreach git pull
git reset --hard
。这几乎没有价值。
git reset --hard
git clean -fd
这对我有用-clean显示了它删除的所有文件。如果它告诉您将丢失更改,则需要隐藏。
丑陋但简单的方法:删除本地文件夹,然后再次克隆远程存储库。