我已将git repo克隆到我服务器上的/tmp
。然后我继续将git repo的内容复制到/var/my-site
,而没有实际复制.git
文件本身。这是几个星期前。我对/var/my-site
目录进行了一些更改,而不必担心在我初始安装到.git
时/var/my-site
文件夹没有被移动。
几周之后,远程git repo已经更新了我希望利用的新功能,而不会丢失数周的工作。有没有什么方法可以更新/var/my-site
的源代码,而无需使用新功能,拖放,剪切和粘贴等精心编辑每个文件,仍然保持我以前的工作?
将.git
文件夹从/tmp
移动到/var/my-site
是否正常工作,还是这不像我想的那么容易?
答案 0 :(得分:3)
你还有/tmp
中的克隆吗?如果是这样,您可以将文件从/var/my-site
复制回该克隆,提交它们(因为这是您自己的存储库分支),然后合并远程存储库中的更改。这将为您提供一个包含所有远程更改和更改的最新分支。然后,您可以将其复制回/var/my-site
。
如果您没有原始克隆,可以尝试创建远程存储库的新克隆并将文件复制到该克隆,但生成的更改集可能会令人困惑。如果你有最初制作的克隆,那就容易多了。
答案 1 :(得分:2)
只是将.git文件夹从/ tmp移动到/ var / my-site工作,或者这不像我想的那么容易。
此时,my-site
目录成为git存储库,您将能够:
git pull
以与远程合并。git stash
),然后运行提取,然后应用您的更改(git stash pop
或git stash apply
以保留存储空间)答案 2 :(得分:1)
第一次克隆它时,找到哪个提交的HEAD
的麻烦不那么麻烦。然后,您可以将修改后的文件复制到当前分支指向此头的存储库中,提交更改并尝试与远程存储库的上次更新合并。
粗略地说,这看起来像这样:
git checkout -b temp
git reset --hard {OLDCOMMIT}
cp /var/my-site/* .
[commit changes]
git merge origin/master
如果您很难找到原始提交ID,可以使用git reflog
命令,该命令提供您最后一次分支更改提示的历史记录。如果您最近只提取并进行了大量更改,那么您可以在拉动之前找到旧的HEAD
。