将本地非git工作合并到远程git存储库
我想将非git启动的文件夹中的工作与远程git存储库合并 以下工作:将本地非git工作合并到远程git存储库,git,merge,local,rebase,Git,Merge,Local,Rebase,我想将非git启动的文件夹中的工作与远程git存储库合并 以下工作: git init git add git commit git remote add origin [url] git fetch git rebase origin/master git push -u origin master 另一种选择是: git init git add git commit git remote add origin [url] git pull --allow-unrelated-hist
git init
git add
git commit
git remote add origin [url]
git fetch
git rebase origin/master
git push -u origin master
另一种选择是:
git init
git add
git commit
git remote add origin [url]
git pull --allow-unrelated-histories origin master
git push -u origin master
但是,——允许不相关的历史记录
需要编写很长时间(git的创建者不想实现快捷方式,因为“这是一个罕见的案例”),我听说在这种情况下,进行重基比合并更好
你知道更快的方法吗
编辑长版本: 为了直截了当,我很乐意跳过工作流部分,但以下是我的工作流,以了解原因(我记住了您推荐的工作流,但我不确定它是否适用于我的情况):
- 我网站的代码在ftp上
- 我直接在ftp上工作,因为它对我来说更方便
- 我将ftp文件夹拖放到桌面上,并运行git命令将本地ftp更改与协作者GitHub更改合并
-所有这些都集成在我的IDE中,我可以用一个软件“即时”进行修改
-没有要使用的本地服务器
-无法从本地传输到ftp(除非合作者在GitHub上进行了更改)
-网站的插件不符合我的本地配置,因此我无法拥有合适的本地测试环境
-我以前在本地工作,但由于任何原因将代码传输到ftp时,结果都不一样 我同意这可能是“手工制作”的,但它做得很好,因为我独自编写代码。现在有另一个人,所以我们把代码放在GitHub上,我用提到的git命令解决了代码之间的同步问题。我有代码的写权限,所以我不需要fork/pull请求。我不需要永久保留本地回购协议,所以我更喜欢删除它,但是如果SCM需要我保留所有项目的本地回购协议,我会这样做,但是呃。。。我不喜欢它,因为我不需要它,这就是为什么我在第一条消息中找到了解决方案 你认为我应该有一个更好的工作流程吗?你认为我们是否应该在不同的分支上工作,即使是小的变化(如果它允许有一个更干净的历史,我会这样做,因为我喜欢保持组织和精简,顺便说一下,这就是为什么我使用rebase而不是合并) 事实上,一个大的背景问题是:大型团队如何将他们的GitHub代码与ftp代码同步(在更新repo和实际ftp repo之前,在测试ftp文件夹上检查新的GitHub代码是否正常)?愚蠢的问题:他们从ftp上正确地进行SCM吗(怎么做?这太棒了) 我是SCM的新手,我在问自己所有这些问题 你知道更快的方法吗 这是一个错误的问题。正确的问题是:是什么驱使您在SCM之外做任何工作-在本地或远程回购之外? 将您的工作与远程回购同步的“最快”方式是什么,这一问题是合理的,但由于您尚未提供任何有关工作流程的详细信息,我们无法肯定地回答这个问题 我建议改为使用此工作流:
针对添加到问题中的较长历史记录进行了更新 如果我正确理解你的情况,我认为上述方法仍然有效。我建议您在本地PC上创建Github repo的镜像,您总是将其保存在那里。您仍然可以通过FTP在服务器上进行所有更改,因为您说这更方便-但我会小心,因为(如果我理解正确的话),您正在更改live web站点。如果这适用于您的情况(包括在不首先测试新版本的情况下这样做的危险),那么也没关系 考虑到您的具体情况,我会尝试以下两种方法-但我不能100%确定Git将如何与FTP交互(也就是说,希望它不会刷新现有文件上的日期或任何其他导致Git将其视为已更改的内容)
- 对FTP站点进行新更改
- 准备将更新添加到repo时,在从FTP下拉之前,将远程服务器提取到本地服务器,以获取远程服务器上的任何新提交
- 将您的更改从FTP下拉到本地repo,只需覆盖任何现有文件。如果这是我认为的方式,那么git状态将只显示此时更改的文件
- 执行
将所有更改添加到indgit添加。
> git clone [repo URL] > cd [repo name] > mv ../[folder name of your stuff] . > git add . > git commit -m "added my stuff in folder [folder name of your stuff]"