标签: git

如何恢复推送提交?

我们想要撤消最后 2 次都推送到原始主控的提交。在 tortoise git 中,我们可以查看历史记录,然后单击上次提交后的第 3 个,然后选择“将 master 重置为此”,我们猜测这意味着恢复到此版本。

但是,当您选择此选项时,您必须从以下三个选项之一中进行选择:

  1. soft - 保持工作树和索引不变。
  2. 混合 - 保持工作树不变,重置索引
  3. 硬重置工作树和索引。

不幸的是,我们不知道我们应该选择这 3 个选项中的哪一个 - 我们只想撤消最后两次提交并及时返回。

下一个问题是此操作是在远程源、您的存储库、您的工作目录还是这三者的组合上发生?例如,是否必须在还原后进行提交和推送,或者它是否为您执行此操作?

我们会猜测 HARD 是我们想要的 - 它会将存储库(不确定是哪个)和我们的本地源代码恢复到以前的版本。如果是这种情况,为什么这不是默认值,另外两个选项的用例是什么?要么你想恢复,要么不恢复,如果你只恢复远程仓库,而不是你的本地工作文件,那么你将处于混乱状态。

我们没有任何本地修改的文件。

请注意,我们非常渴望一个不会破坏 git 的解决方案(我们过去曾破坏过 git,不得不创建一个新的 repo)。也许另一种方法是可行的,例如检出以前的版本,然后在最新版本的顶部检入,但我们不知道如何执行此操作。

我们知道我们可以做这样的事情:

git checkout [revision]
Run Code Online (Sandbox Code Playgroud)

但是我们如何告诉 git 我们想要让这个版本成为新的 head 或者用这个替换 head 呢?我猜我们不能只提交,因为没有什么可提交的,因为我们不再是主人。顺便说一句,如果您查看上一个。版本,修改它,然后提交,你提交什么,提交到哪里?

我已经阅读了https://www.atlassian.com/git/tutorials/undoing-changes但它没有解决本地和远程 repos 之间的关系。如果要撤消的提交全部推送到远程源主机,则不清楚恢复远程源、本地存储库和工作目录的方法是什么——所有 3 项都必须恢复到 3 次提交之前的提交。我们真的不在乎这是通过重置还是还原来完成的——我们只需要一种方法来做到这一点,它适用于所有 3 个位置。

正确的接收方可能是这样的:

   git status (we are on master with a clean working dir)
   git git revert HEAD~2
   git commit -m "revert"
   git push origin …
Run Code Online (Sandbox Code Playgroud)

git tortoisegit

11
推荐指数
4
解决办法
5万
查看次数

Creating a .gitignore file for a Django website

I'm ready to push my existing Django project (which i've been running in a local environment) to a Bitbucket repository so I can run it on a public server. At the moment I feel like there's a lot of files created in local development that needs to be added to .gitignore.

在 github 上找到了这个.gitignore文件,但是我仍然觉得它缺少一些东西,例如它似乎没有从每个migrations文件夹中删除文件。还有很多我不知道他们做什么的东西——我知道并不是所有的东西都是需要的。任何建议表示赞赏。

python git django gitignore

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

设置证书验证位置时出错 - Github

我在通过Git Bash访问 github 存储库时遇到问题。

2 天前,我能够推/拉存储库。然后

1)我在gitlab.com上创建了一个帐户

2)我在我的本地电脑上使用GitLab 和 SSH 密钥在 Windows 上使用git bash生成了 ssh 密钥

3)在此之后,我没有在 gitlab 上创建/拉/推任何存储库。

今天,我对代码(部署在 github 上)进行了一些更改,当我尝试推送该代码时,出现以下错误

fatal: unable to access 'https://github.com/junaidbinsarfraz/repo.git/': error setting certificate verify locations:
  CAfile: E:/Softwares/Git/mingw64/libexec/ssl/certs/ca-bundle.crt
  CApath: none
Run Code Online (Sandbox Code Playgroud)

libexec 中没有ssl文件夹

libexec 文件夹

自 2017 年 1 月以来,Git 文件夹中的文件/文件夹也没有更改

在此处输入图片说明

似乎是 git-bash 问题,不确定。任何人都可以帮忙吗?

git bash ssl github

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

Git rebase 删除了最近的更改?

我有一个master分支和两个工作分支,a并且b. 分支b是从同一点创建的,a但涉及不同的文件(只有一个共享文件d.py)。科b刚被拉进master

                (a)   F---H-J----L---
                     /
(master)A--B--C--D--E--------------M
                     \            /
                 (b)  G----I----K
Run Code Online (Sandbox Code Playgroud)

在我a现在对分支Github 的拉取请求中说

此分支存在必须解决的冲突

使用 Web 编辑器或commandline解决冲突。

冲突文件

剪辑/ d.py

我以为我可以做显而易见的事情,git pull --rebase master最终得到一个看起来像这样的历史:

                             F---H-J----L--
                            /            
A--B--C--D--E--------------M
             \            /
              G----I----K
Run Code Online (Sandbox Code Playgroud)

然后合并到主人,一切都会很棒

                             F---H-J----L
                            /            \
A--B--C--D--E--------------M--------------N
             \            /
              G----I----K
Run Code Online (Sandbox Code Playgroud)

当我尝试合并时,这就是我得到的

You are currently rebasing branch 'bug/1500/Things' on '1234567'.
  (fix conflicts and then run "git rebase --continue")
  (use "git rebase --skip" …
Run Code Online (Sandbox Code Playgroud)

git

11
推荐指数
2
解决办法
4252
查看次数

我可以将推送提交从一个分支移动到另一个现有分支吗?

我有 3 个分支:develop,feature-1feature-2. 我在工作feature-1,然后切换到工作feature-2。然后我完成了工作feature-2,提交并推送到 repo,然后为该功能创建了一个合并请求。然后我看到其中feature-2包含一些应该在feature-1. 我可以将它们从本地移动feature-2feature-1本地,然后在回购中反映相同的移动吗?

git git-branch

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

Visual Studio 未在上下文菜单中显示 Git 提交选项

我有一个现有的 Bitbucket Git 项目,我已经从这里安装了 Visual Studio Tools for Git

在我进入工具>选项>源代码控制并将其从无更改为“Microsoft Git provider”之前,我的visual studio根本没有显示任何内容来表示我已完成此操作

现在我的解决方案资源管理器在正确的位置显示了小挂锁和刻度,但是当我右键单击时,与提交或任何 git 无关

当我创建一个新项目时,我也没有创建新 git 存储库的选项。

我正在使用 Visual Studio 2012 并尝试安装所有更新并修复该工具,但仍然没有乐趣。

有谁知道发生了什么?

git bitbucket visual-studio-2012

10
推荐指数
2
解决办法
9349
查看次数

在 git 中获取总远程分支

如何在git中获取总远程分支?为了获得所有远程分支,我在下面执行此语句,但我无法获得这些分支的计数/总数。试过 --count 但没有用

  git branch -r
Run Code Online (Sandbox Code Playgroud)

我怎么会得到这些?

git

10
推荐指数
2
解决办法
4585
查看次数

git安装错误缺少安装候选

我尝试git使用命令在 Ubuntu 12.10 上安装sudo apt-get install git。但我收到这样的错误消息:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package git is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package 'git' has no installation candidate
Run Code Online (Sandbox Code Playgroud)

我该怎么做?

git ubuntu

10
推荐指数
4
解决办法
3万
查看次数

是否有任何 git merge-strategies 用于忽略提交或分支合并到目标分支的子模块更新?

我的用例是:我有一个包含子模块的 repo 的两个分支。我想设置这两个分支的自动集成。但是每当两个分支上都有子模块更新时,我的自动集成脚本就会因子模块冲突而失败。有没有办法让 git 在合并期间忽略子模块指针的变化?或者为merge=ours给定的子模块提供类似的东西?

我在这里读过这个

我在上面的页面中尝试了像这样的子模块文件夹的合并策略(但它只适用于文件)

submodule-name merge=ours
Run Code Online (Sandbox Code Playgroud)

git merge github git-submodules merge-strategy

10
推荐指数
1
解决办法
1108
查看次数

Git 将嵌套的 git repos 视为常规文件/文件夹

我有一个像这样组织的顶级 git repo:

  • .git/
  • 回购协议/
    • .git/
    • 文件
    • 文件 2
    • 文件夹/
    • ...
  • 文件
  • 文件 2
  • 文件夹/
  • ...

我怎样才能将 gitaddcommit repoA(和repoA/.git)当作常规文件/文件夹一样?

具体来说,我想绕过将此类文件夹作为子模块的处理,但我想保留嵌套 repo 的分支/历史记录(因此.git需要该文件夹)。

我不想改变嵌套存储库的状态(通过提交或合并历史记录),也不想将它推送到远程的单独存储库。

预期的结果与我稍后tar repoA取消的结果相同tar。也就是说,所有文件都是完整的,没有被 git 修改或特殊处理。

git

10
推荐指数
1
解决办法
1008
查看次数