我有两个分支:
最近我严重搞砸了我当地的分店(猜猜每个git-newbie在某个时间点都在我的位置)
我如何完全用远程分支替换本地分支,所以我可以从远程分支现在继续我的工作?
(我已经搜索过SO并且在本地检查远程分支没有任何影响)
ara*_*nid 1167
假设master是您正在替换的本地分支,并且"origin/master"是您要重置为的远程分支:
git reset --hard origin/master
Run Code Online (Sandbox Code Playgroud)这--hard会将您的本地HEAD分支更新为与origin/master相同的修订,并将此更改同步到索引和工作空间.
ada*_*ith 200
这就像三个步骤一样简单:
git branch -d local_branch git fetch origin remote_branch git checkout -b local_branch origin/remote_branch TTT*_*TTT 121
我有点惊讶还没有人提到这一点;我几乎每天都使用它:
git reset --hard @{u}
Run Code Online (Sandbox Code Playgroud)
基本上,@{u}只是您当前分支正在跟踪的上游分支的简写。例如,这通常等于origin/[my-current-branch-name]。这很好,因为它与分支无关。
确保git fetch首先获取远程分支的最新副本。
Sai*_*esh 39
git branch -D <branch-name>
git fetch <remote> <branch-name>
git checkout -b <branch-name> --track <remote>/<branch-name>
Run Code Online (Sandbox Code Playgroud)
bit*_*ess 15
用远程分支替换所有内容; 但是,只有来自本地分支的相同提交:
git reset --hard origin/some-branch
Run Code Online (Sandbox Code Playgroud)
或者,从远程分支获取最新信息并替换所有内容:
git fetch origin some-branch
git reset --hard FETCH_HEAD
Run Code Online (Sandbox Code Playgroud)
另外,如果需要,您可以清除尚未提交的未跟踪文件和目录:
git clean -fd
Run Code Online (Sandbox Code Playgroud)
用遥控器替换当前本地分支的最安全,最完整的方法:
git stash
git merge --abort
git rebase --abort
git branch -M yourBranch replaced_yourBranch
git fetch origin yourBranch:yourBranch
git checkout yourBranch
Run Code Online (Sandbox Code Playgroud)
该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}
}
Run Code Online (Sandbox Code Playgroud)
它将当前分支重命名为replacement_master_98d258f.
可以通过多种方式完成,继续编辑此答案以传播更好的知识观点。
1)硬重置
如果您正在远程开发分支工作,您可以将 HEAD 重置为远程分支上的最后一次提交,如下所示:
git reset --hard origin/develop
Run Code Online (Sandbox Code Playgroud)
2)删除当前分支,并再次从远程存储库中签出
考虑到,您正在本地存储库中的开发分支上工作,该分支与远程/开发分支同步,您可以执行以下操作:
git branch -D develop
git checkout -b develop origin/develop
Run Code Online (Sandbox Code Playgroud)
3) 中止合并
如果您正在进行一次错误的合并(错误地使用了错误的分支),并且希望避免合并返回到最新的分支,如下所示:
git merge --abort
Run Code Online (Sandbox Code Playgroud)
4) 中止变基
如果您处于错误的变基期间,您可以中止变基请求,如下所示:
git rebase --abort
Run Code Online (Sandbox Code Playgroud)