标签: git-remote

GIT 推送不将提交推送到远程

我一直在开发 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 次提交的提交历史记录,因为进行了相当多的更改。

git push commit git-remote

5
推荐指数
1
解决办法
2万
查看次数

通过 ssh 推送时 Git 推送挂起

尝试将我的开发分支推送到我的 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 ssh github git-push git-remote

5
推荐指数
1
解决办法
6972
查看次数

在git中删除远程分支:一劳永逸地理解它

我今天在这里发帖的原因是因为我在命令行上看到的行为与我实际在网上阅读的行为不同。所以这让我很困惑。

这里有问题的两个命令是:

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,所以我不知道它为什么这样做。

我想知道为什么会发生这种情况,而且(为了解决这个问题的更一般的标题,也许可以帮助其他人清理堆栈溢出以找到这些令人困惑的歧义的答案),我想对一些问题有更一般的答案:

  • 有两种方法可以删除远程分支。有什么真正好、简单的方法来记住在哪种情况下使用哪个?
  • 假设这很重要,那么相应的本地分支(对于远程分支)的存在如何影响如何删除远程分支的决定?
  • 本地和远程分支之间跟踪引用/关系的存在如何影响您选择删除分支的方式,以及哪种删除分支的方法也会清除跟踪引用?

git git-remote git-branch remote-repository

5
推荐指数
1
解决办法
699
查看次数

旧的远程别名在 git 日志和 gitk 中仍然可见,如何删除?

我最近将远程重命名为新别名,旧别名(及其重命名之前的所有提交)仍然在日志中可见,因此 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)

git git-remote

5
推荐指数
1
解决办法
937
查看次数

使用深度 1 选项进行克隆时 git checkout 新的远程分支

在我克隆了一个存储库后,一个新分支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)

git branch git-clone git-remote

5
推荐指数
1
解决办法
2382
查看次数

git 存储库拥有多个遥控器意味着什么?

我正在阅读 Pro Git,关于远程存储库的部分对我来说有点令人困惑。特别是,有一个部分作者说:

\n\n

http://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\n
Run 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

正如你所看到的,我对此几乎完全迷失了。我觉得他们向我解释的方式让我无法理解。

\n

git github git-remote

5
推荐指数
1
解决办法
1244
查看次数

我可以在现有存储库中添加其他引用吗?

git clone有一个--reference <repository>选项可以设置一种可用于存储对象的缓存,因此不需要将所有对象复制到新创建的存储库中。将创建一个文件.git/objects/info/alternates,其中列出引用的存储库目录。

我刚刚尝试并能够在克隆时指定多个“引用”,并在文件中创建了两行.git/objects/info/alternates

我的问题:是否有一个命令可以在克隆后的某个时刻在现有存储库中添加引用。例如,通过类似 的命令git remote reference <repo>

如果没有,是否可以通过手动编辑文件.../alternates来达到相同的结果?

git git-clone git-remote

5
推荐指数
0
解决办法
392
查看次数

用另一个本地分支替换一个本地分支......并保留跟踪

我有 2 个本地分支正在跟踪不同的存储库:

  • local-live(跟踪我们的实时仓库)
  • 本地暂存(跟踪暂存仓库)

我们设置了“连续部署”,所以当我推送我的本地登台时,登台环境将随着更改而更新。我希望登台以反映实时代码(当前情况并非如此)。

我如何用我的“local-live”分支中的代码替换我的“local-staging”分支?我想清除所有暂存更改,使暂存反映现场直播的内容。我希望我的本地暂存仍然跟踪暂存仓库(即来自暂存的“git push”将按预期运行)

希望这很清楚。谢谢。

git git-remote branching-and-merging git-branch

5
推荐指数
1
解决办法
3540
查看次数

更改git分支的原点

我以这种方式创建了分支:

git branch MyBranch origin/test
Run Code Online (Sandbox Code Playgroud)

test是与 master 平行的分支。现在测试合并到主

我怎样才能改变原点,MyBranch所以它指向主人

git git-remote

5
推荐指数
1
解决办法
6023
查看次数

在 git remote 上撤消设置分支

我目前已经设置了我的 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 git-remote

5
推荐指数
1
解决办法
476
查看次数