我一直在开发 git 存储库,并且一直将本地更改推送到远程服务器......直到最近。当我执行 git Push 时,它说一切都是最新的。事实上,我已经比远程版本提前了 3 个提交,但它没有得到我的更改。
我已经尝试过发布在各个地方的 git log -1, git reset --hard 解决方案,但这并不能解决任何问题。我是否需要更改该数字以反映我领先的提交数量?
假设我有 5 个提交,为了简洁起见,命名为 1 到 5。我的本地版本是 5,远程版本是 2。Gitk 在提交 5 处显示我的 MASTER,在提交 2 处显示远程/origin/master。我需要 git将我的本地版本重置为 2(或 3,未推送到远程的第一个提交)?我的改变会发生什么?git 文档说 --hard 将放弃任何更改,这是否意味着它们将完全丢失?我想保留这 3 次提交的提交历史记录,因为进行了相当多的更改。
尝试将我的开发分支推送到我的 github 存储库。
git push origin develop -v
Run Code Online (Sandbox Code Playgroud)
连接挂起、挂起、挂起、挂起,永远不会超时。我从来没有收到错误消息,也没有收到“写入对象”或任何类型的通信。
通过 ssh 连接。已验证我可以通过 ssh 连接到 github,这意味着我的公钥是有效的。
git remote set-url origin git@github.com:username/Forkedrepo.git
ssh -T git@github.com
Run Code Online (Sandbox Code Playgroud)
我还可以做些什么?FWIW,我可以通过 ssh 和 git Push 连接到其他站点。我也知道我无法通过此路由器通过 https 连接。
使用 Windows 工作站和 git Push 与其他非 github 远程存储库配合使用。
我今天在这里发帖的原因是因为我在命令行上看到的行为与我实际在网上阅读的行为不同。所以这让我很困惑。
这里有问题的两个命令是:
git branch -r -d origin/topic1
Run Code Online (Sandbox Code Playgroud)
和
git push origin :topic1
Run Code Online (Sandbox Code Playgroud)
到目前为止我的理解(不过我可能完全错了,我的大脑已经炸了):
这是我最近遇到的一个场景。我刚刚克隆了一个具有两个远程分支的存储库:
origin/master
origin/develop
Run Code Online (Sandbox Code Playgroud)
我唯一的本地分支机构是:
master
Run Code Online (Sandbox Code Playgroud)
我想删除远程分支origin/develop,所以请注意:
Robert@COMP /c/Code/project (master)
$ git branch -rd origin/develop
Deleted remote branch origin/develop (was 9ff16e8).
Robert@COMP /c/Code/project (master)
$ git fetch
From github.com:username/project
* [new branch] develop -> origin/develop
Run Code Online (Sandbox Code Playgroud)
如您所见,我尝试删除远程分支,并立即从源获取最新更改,但由于某种原因它重新创建了分支。我不知道为什么会这样做,我很困惑。我没有本地对应的分支origin/develop,所以我不知道它为什么这样做。
我想知道为什么会发生这种情况,而且(为了解决这个问题的更一般的标题,也许可以帮助其他人清理堆栈溢出以找到这些令人困惑的歧义的答案),我想对一些问题有更一般的答案:
我最近将远程重命名为新别名,旧别名(及其重命名之前的所有提交)仍然在日志中可见,因此 gitk. 跑步
$ git remote show old-alias
Run Code Online (Sandbox Code Playgroud)
显然返回:
fatal: 'old-alias' does not appear to be a git repository
Run Code Online (Sandbox Code Playgroud)
这很烦人。如何彻底删除这些引用?我手动删除可以吗
.git/logs/refs/remotes/old-alias/
.git/refs/remotes/old-alias/
Run Code Online (Sandbox Code Playgroud)
目录?
编辑:
这是git remote -v输出:
origin git@github.com:my-user/our-repo (fetch)
origin git@github.com:my-user/our-repo (push)
upstream git@github.com:upstream-user/our-repo (fetch)
upstream git@github.com:upstream-user/our-repo (push)
Run Code Online (Sandbox Code Playgroud)
这是git log --oneline --graph --decorate输出:
* 692d53f (HEAD, origin/somebranch, somebranch) Commit message
* 9a4e794 Commit message
* 419376b Commit message
* 9a945bd (origin/someotherbranch, someotherbranch) Commit message
* 9a0fe3b Commit message
* 021d553 Commit message
* fa60dba Commit …Run Code Online (Sandbox Code Playgroud) 在我克隆了一个存储库后,一个新分支test已添加到origin远程。但我仍然看到:
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
Run Code Online (Sandbox Code Playgroud)
我应该使用什么 git 命令来获得以下输出:
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
remotes/origin/test
Run Code Online (Sandbox Code Playgroud)
git checkout 远程分支问题不是我的问题,因为这是在我看到所有远程分支引用之后发生的。
我无法再次克隆该存储库,因为其中有本地更改/提交。
那么,如何使用 git 命令将新的远程分支引用引入我的存储库?
我正在使用具有以下分支的 BitBucket 存储库:
试炼
git fetch不起作用:
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
$ git fetch
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
$ git fetch origin
$ git branch -a
* master
remotes/origin/HEAD -> origin/master …Run Code Online (Sandbox Code Playgroud) 我正在阅读 Pro Git,关于远程存储库的部分对我来说有点令人困惑。特别是,有一个部分作者说:
\n\nhttp://git-scm.com/book/en/Git-Basics-Working-with-Remotes
\n\n“如果您有多个遥控器,该命令会列出所有遥控器。例如,我的 Grit 存储库看起来像这样。
\n\n$ cd grit\n$ git remote -v\nbakkdoor git://github.com/bakkdoor/grit.git\ncho45 git://github.com/cho45/grit.git\ndefunkt git://github.com/defunkt/grit.git\nkoke git://github.com/koke/grit.git\norigin git@github.com:mojombo/grit.git\nRun Code Online (Sandbox Code Playgroud)\n\n这意味着我可以很容易地从这些用户中获取贡献。但请注意,只有源远程是 SSH URL,因此它\xe2\x80\x99 是我唯一可以推送到的地址(我们\xe2\x80\x99 将在第 4 章中介绍为什么会这样)。”
\n\n我的问题是,与 grit 相关的四个远程存储库(bakkdoor、cho、defunkt、koke)是什么?它们构成了 grit 仓库吗?或者它们是同一个 grit 存储库的不同副本?或者他们根本没有关系?
\n\n此外,如果 grit 存储库由这 4 个独立的存储库组成,为什么它们要单独命名?将它们全部放在“origin”下不是更有意义吗?
\n\n正如你所看到的,我对此几乎完全迷失了。我觉得他们向我解释的方式让我无法理解。
\ngit clone有一个--reference <repository>选项可以设置一种可用于存储对象的缓存,因此不需要将所有对象复制到新创建的存储库中。将创建一个文件.git/objects/info/alternates,其中列出引用的存储库目录。
我刚刚尝试并能够在克隆时指定多个“引用”,并在文件中创建了两行.git/objects/info/alternates。
我的问题:是否有一个命令可以在克隆后的某个时刻在现有存储库中添加引用。例如,通过类似 的命令git remote reference <repo>。
如果没有,是否可以通过手动编辑文件.../alternates来达到相同的结果?
我有 2 个本地分支正在跟踪不同的存储库:
我们设置了“连续部署”,所以当我推送我的本地登台时,登台环境将随着更改而更新。我希望登台以反映实时代码(当前情况并非如此)。
我如何用我的“local-live”分支中的代码替换我的“local-staging”分支?我想清除所有暂存更改,使暂存反映现场直播的内容。我希望我的本地暂存仍然跟踪暂存仓库(即来自暂存的“git push”将按预期运行)
希望这很清楚。谢谢。
我以这种方式创建了分支:
git branch MyBranch origin/test
Run Code Online (Sandbox Code Playgroud)
test是与 master 平行的分支。现在测试合并到主
我怎样才能改变原点,MyBranch所以它指向主人
我目前已经设置了我的 git remote 来限制获取哪些分支:
git remote set-branches myOrigin myBranch
Run Code Online (Sandbox Code Playgroud)
这将适当的条目添加到.git/config:
[remote "myOrigin"]
fetch = +refs/heads/myBranch:refs/remotes/myOrigin/myBranch
Run Code Online (Sandbox Code Playgroud)
现在我想撤销这个,回到默认配置:
[remote "myOrigin"]
fetch = +refs/heads/*:refs/remotes/myOrigin/*
Run Code Online (Sandbox Code Playgroud)
如何在不手动修改我的情况下执行此操作.git/config?有git我可以运行的命令吗?
git ×10
git-remote ×10
git-branch ×2
git-clone ×2
github ×2
branch ×1
commit ×1
git-push ×1
push ×1
ssh ×1