同步本地Git存储库与远程Git存储库
我想将我的本地存储库与远程存储库同步,以便我的本地存储库成为远程存储库的100%副本-这意味着如果这些存储库中的某些文件不同,我们将用远程存储库覆盖本地存储库,如果本地存储库中的文件在远程存储库中不存在,本地文件将被删除 除了对远程存储库进行新的克隆之外,还有其他方法可以实现这一点吗 类似于。的问题,您可以使用。只需创建一个钩子,在更新后将更改的内容推送到另一个repo同步本地Git存储库与远程Git存储库,git,Git,我想将我的本地存储库与远程存储库同步,以便我的本地存储库成为远程存储库的100%副本-这意味着如果这些存储库中的某些文件不同,我们将用远程存储库覆盖本地存储库,如果本地存储库中的文件在远程存储库中不存在,本地文件将被删除 除了对远程存储库进行新的克隆之外,还有其他方法可以实现这一点吗 类似于。的问题,您可以使用。只需创建一个钩子,在更新后将更改的内容推送到另一个repo 当然,您可能会遇到合并冲突,因此您必须考虑如何处理这些冲突。您需要了解,Git存储库不仅是目录树和文件树,而且还存储这些树的历
当然,您可能会遇到合并冲突,因此您必须考虑如何处理这些冲突。您需要了解,Git存储库不仅是目录树和文件树,而且还存储这些树的历史记录,其中可能包含分支和合并 从存储库获取时,您将把那里的所有或部分分支复制到存储库中。然后,这些分支在您的存储库中作为“远程跟踪分支”,例如名为
remotes/origin/master
之类的分支
从远程存储库获取新提交不会改变本地工作副本的任何内容
您的工作副本通常有一个已签出的提交,称为HEAD
。此提交通常是某个本地分支的提示
我认为您需要将您的本地分支(或者所有本地分支?)更新到相应的远程分支,然后签出最新的分支
为了避免与您的工作副本(可能有本地更改)发生任何冲突,您首先清理所有未进行版本控制的内容(使用git clean
)。然后签出与要更新到的远程分支相对应的本地分支,并使用git reset
将其切换到获取的远程分支。(git pull
将把远程分支的所有更新合并到本地分支中,本地分支可能也会这样做,或者如果有本地提交,则创建合并提交。)
(但是,您将真正丢失任何本地更改—包括工作副本和本地提交中的更改。请确保您确实需要此更改—否则最好使用新分支,这样可以保存您的本地提交。并使用git stash
保存尚未提交的更改。)
编辑: 如果您只有一个本地分支,并且正在跟踪一个远程分支,那么您需要做的就是
git pull
从工作目录中
这将获取所有跟踪的远程分支的当前版本,并将当前分支(和工作目录)更新为它正在跟踪的远程分支的当前版本。听起来您想要远程存储库的镜像:
git clone --mirror url://to/remote.git local.git
该命令将创建一个空存储库。如果你不想要一个简单的存储库,事情会变得更复杂。(此信息来自)
我也在学习,所以这可能不是问题的确切答案,但它可能会帮助某些人:
git branch-r
查看它们)git fetch
。这不会影响任何现有的、自定义创建的分支git add origin/path/To/repository
),请使用git checkout origin/branch\u name
,这将覆盖您对分支branch\u name
的本地更改这些步骤可以做到这一点:
git reset --hard HEAD
git clean -f -x -d -n
然后没有-n
这将考虑所有本地更改。现在提交
git status
并注意行,例如:
Your branch is ahead of 'xxxx' by N commits.
记下数字“N”
现在:
最后:
git status
不应显示任何要添加/提交的内容。
都干净了
然而,一个新的克隆也可以做到这一点(但速度要慢得多)
==已更新===
随着我的git知识随着时间的推移略有提高,我想出了另一种更简单的方法来实现这一点。下面是如何(解释)。在你的工作部门:
git fetch # This updates 'remote' portion of local repo.
git reset --hard origin/<your-working-branch>
# this will sync your local copy with remote content, discarding any committed
# or uncommitted changes.
git fetch#这将更新本地回购的“远程”部分。
git重置——硬原点/
#这将使您的本地副本与远程内容同步,并丢弃任何已提交的内容
#或未提交的更改。
尽管在此之后本地提交和更改将消失,但如有必要,可以恢复提交的更改
git fetch --prune
-p,--prune
获取后,删除远程服务器上不再存在的任何远程跟踪分支 你想做什么
git fetch --prune origin
git reset --hard origin/master
git clean -f -d
这使得本地回购与远程回购完全相同
请记住将“原始”和“主”替换为要与之同步的“远程”和“分支”。如果要同步分叉回购,则可以按照以下步骤操作
git fetch origin && git reset --hard origin/master && git clean -f -d
如何从git同步fork存储库
git分行
git签出主机
git取上游
git远程添加上游git@github.com:上游\克隆\回购\ url/xyz.git
fatal: 'upstream/master' does not appear to be a git repository
fatal: Could not read from remote repository.
Please make sure you have the correct access rights and the repository exists.
git取上游
git合并上游/master
就这样
通过更具体的git-remote-v
git-remote命令进行交叉检查
如果我还拥有上游回购的承诺权,我可以创建一个本地上游分支机构,并在那里开展上游工作重置和同步本地
git fetch origin && git reset --hard origin/master && git clean -f -d
git fetch origin
git reset --hard origin/master
git clean -f -d
sharkbook:forge lbaxter$ git fetch origin && git reset --hard origin/master && git clean -f -d
HEAD is now at 356cd85 FORGE-680
Removing forge-example-plugin/
Removing plugin-container-api/
Removing plugin-container/
Removing shell/.forge_settings
sharkbook:forge lbaxter$
git config --global push.default current