我想同步我的本地存储库,以便使本地成为主服务器的精确副本.检查后我已经添加了几个文件到我的本地,而不是主文件,我不想提交.不过,在这个过程中,我想删除本地与master的所有差异:当我完成后,本地的其他文件将被删除.
早期的问题提供了一种使本地像master一样的策略:将 本地存储库分支重置为远程存储库HEAD
但这对我不起作用.推荐的命令,git fetch origin git reset --hard origin/master
不要擦除本地的其他文件,即使git status表示local和master相同.而且,在一种情况下,主文件版本的文件并没有取代我的本地版本.
关于如何做到这一点的任何想法?
我是git和Github的新手.我已经学习了许多术语(推,拉,提交,分支等),但我将主要使用常用的说法来解释我最初的期望.
我假设这个过程是:
1.) Create a git repo out of my existing files.
2.) Copy those to my Github account to create a central "hub".
3.) Anyone who works on the project will check it out from Github, do work on their computers, then upload the changes to the hub.
4.) Anyone else working on the same branch can easily upload their changes as well, and will be warned if there are any conflicts. They can also easily download changes since …Run Code Online (Sandbox Code Playgroud) 为了与工作树一起使用,我正在尝试制作一个裸克隆,但是远程分支被映射到远程跟踪分支。
我正在尝试建立一个通用的工作树工作流程。我的 repo 真的很大,所以克隆它很昂贵。即使使用硬链接,随着 repos 被gc编辑,它们往往会随着时间的推移而发散并占用额外的空间,并且在一个 repo 中获取对另一个 repo 没有帮助,因此在工作树中工作似乎是显而易见的事情。(你必须相信我。)
工作树需要一个实际保存对象的“主”存储库。显然,该克隆不能被删除,所以我想把它放在像/var/cache/git/reponame.wt.git. (我正在为我和我的同事制定一个通用的解决方案,所以我必须使它相当万无一失。)
我可以让它成为一个普通的克隆,但是它必须有一个分支检出,然后该分支不能被任何其他工作树检出,所以我必须制作一个wt_dummy可能混淆人们的虚拟分支(例如)。我真正想做的是使主要回购成为bare回购。
问题是git clone --bare不创建远程跟踪分支。所以为了制作一个“裸回购但带有远程跟踪分支”,我已经开始走这条路
git clone --bare <remote> repo.tmp
mv repo.tmp.git reponame.wt.git
cd reponame.wt.git
git config core.bare true
git config --remove-section branch.master
... and I'm not quite there yet ...
Run Code Online (Sandbox Code Playgroud)
但是 a) 看起来太长太复杂了,并且 b) git 存储库仍然认为它已经master检出。
有没有更好的方法来制作这个“带遥控器的裸机”?
(也许总体上有更好的方法来设置工作树,但我知道这处于堆栈溢出的“特定编程解决方案”范围的毛茸茸的边缘。)
我的情况:我克隆了一个存储库(内核的源文件)。然后检查一个分支,并构建内核。二进制文件已存储在工作树的子目录中。现在,我想放弃所有本地更改,包括构建的二进制文件,并恢复到克隆存储库的不同分支。
特别是,我认为这个答案很有用。在我看来,最好的方法是
git checkout -f <desired branch of the original cloned repository>
Run Code Online (Sandbox Code Playgroud)
如果我理解正确,这应该强制结帐,丢弃本地更改(如果我错了,请纠正我)。Git 已成功签出,但我仍然在工作树的同一子文件夹中找到之前构建的二进制文件。
我在本地 master 中有一些旧的本地提交,因此git status表明我比 origin/master 领先 58 个提交。我不关心那些旧的提交,并且想将本地主控重置为与远程主控相同。这样做的首选是什么?另一个分支也是如此。
我知道可以在本地删除所有内容并重新开始,但我想知道当你不需要使用git命令在本地完成任何事情时,是否有更简单的方法.
例如,如果我在本地添加了一堆我想删除的文件,只需下载最新的主副本.
请注意:阅读其他问题(有很多;我在发布之前阅读),git帮助和博客文章我不确定它是否会重置我的存储库,这就是我发布这个问题的原因; 我想有一个具有相同问题的人可能想要验证,这就是我通过评论所做的.这就是为什么我不认为它是重复的,尽管它可能有相同的反应.