当我使用我的源代码工作时,我做了我惯常的事情提交,然后我推送到远程存储库.但后来我注意到我忘了在源代码中组织我的导入.所以我做了修改命令来替换以前的提交:
> git commit --amend
Run Code Online (Sandbox Code Playgroud)
不幸的是,提交不能被推回到存储库.这被拒绝了:
> git push origin
To //my.remote.repo.com/stuff.git/
! [rejected] master -> master (non-fast forward)
error: failed to push some refs to '//my.remote.repo.com/stuff.git/'
Run Code Online (Sandbox Code Playgroud)
我该怎么办?(我可以访问远程存储库.)
我在一个相对较小的项目上使用git,我发现压缩.git目录的内容可能是备份项目的好方法.但这有点奇怪,因为当我恢复时,我需要做的第一件事就是git reset --hard.
以这种方式备份git repo有什么问题吗?还有,有没有更好的方法(例如,便携式git格式或类似的?)?
考虑到以下要求,在GitHub上创建git存储库的本地备份的最佳方法是什么?:
本地备份应该是一个简单的回购.
备份应包括所有分支.
应该很容易(逐步)更新备份.
基本上,我想要一个完美的镜子,可以轻松更新.就这样,命令
git clone --mirror git://github.com/...
Run Code Online (Sandbox Code Playgroud)
想到了,但据我所知,这不允许轻松更新(我必须删除并重新创建我的本地备份).另外,git clone的镜像选项似乎是最近的,我没有在我正在研究的一些系统上(它有稍微旧版本的git运行).
针对此类问题,您推荐的解决方案是什么?
我一直在使用git半年左右,我不知道我是否完全使用git.
首先,我一直在尝试使用Dropbox,我觉得如果我可以将它合并到我的工作流程中,那么它真的很棒,因为Dropbox非常方便.
git init --bare.然后在我的桌面的提交后脚本中,我有一个git push --mirror
dropbox.这样我的桌面和保管箱将始终完全镜像,这是一件好事.
我真正的问题是:我应该如何设置我的笔记本电脑? 我听到了一些建议:
我一直在做第二,我不知道我做的是否正确.我的工作流程包括:
目前,在我的笔记本电脑上执行git branch -r后,在我的桌面上执行操作并未显示我最近的笔记本电脑提交.有人可以告诉我为什么吗?git push --mirror origin
我提到直接从我的桌面拉,因为这样我总是可以初始化拉动,我100%确信同步完成.使用Dropbox,我永远无法100%确定更新是否已推送到Dropbox服务器
我做过类似的事情:
(1)将远程git存储库克隆到本地主机
本地# git clone http://www.foo.com foo
(2)在ssh主机(bar)上添加另一个项目作为第二个远程存储库
本地# git remote add bar ssh://bar/home/project
本地# git fetch bar
(3)在ssh主机(bar)上做了一些愚蠢的事情:
酒吧# rm -rf /home/project
你能告诉我如何从我的本地副本恢复ssh主机(bar)上的项目,所以ssh主机上的其他开发人员可以继续他们的工作,我可以运行'git fetch bar'来获取他们的提交,就像我没有对他们的ssh主机做任何错误,即撤消我所做的所有主持吧.非常感谢.
更新:
酒吧# mkdir -p /home/project && cd /home/project && git init --bare
本地# git branch remote show bar
本地# git push bar bar/master:refs/heads/master
本地# git push bar bar/branch1:refs/heads/branch1
本地# git push bar bar/branch2:refs/heads/branch2
使用Git,我正在开发一个功能分支.我把分支推到了github,所以有人可以看一下.然后,它已经有一段时间了,所以我重新调整它.如何将我的重新分支推到旧分支上?我必须避免哪些陷阱?我认为这只是git push --force(或--mirror?),但我不确定.
一些相关链接: