相关疑难解决方法(0)

从Git中的分支中删除提交

我想知道如何删除提交.

通过delete,我的意思是,如果我没有做那个承诺,当我将来做一推,我所做的更改不会推到远程分支.

我读了git help,我认为我应该使用的命令是git reset --hard HEAD.它是否正确?

git git-rebase git-reset

3035
推荐指数
28
解决办法
214万
查看次数

如何将修改后的提交推送到远程Git存储库?

当我使用我的源代码工作时,我做了我惯常的事情提交,然后我推送到远程存储库.但后来我注意到我忘了在源代码中组织我的导入.所以我做了修改命令来替换以前的提交:

> 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-amend git-commit

624
推荐指数
14
解决办法
36万
查看次数

为什么我的Git repo进入了独立的HEAD状态?

我今天最终得到了一个独立的头,同样的问题如下所述:git push说一切都是最新的,即使我有本地更改

据我所知,我没有做任何与众不同的事情,只是从我当地的回购中提交和推送.

那我怎么最终得到一个detached HEAD

git

365
推荐指数
7
解决办法
20万
查看次数

git push --force-with-lease vs. --force

我试图了解它们之间的区别

git push -f
Run Code Online (Sandbox Code Playgroud)

git push --force-with-lease
Run Code Online (Sandbox Code Playgroud)

我的猜测是,如果遥控器没有本地分支没有的提交,后者只会推送到遥控

如果有更好的方式来表达问题,lmk,但希望它很清楚.

git git-push

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

为什么"git push helloworld + master:master"而不仅仅是"git push helloworld"?

我最初尝试推送我的(第一次!)git repo:

$ git push helloworld
Run Code Online (Sandbox Code Playgroud)

但我得到了回报:

To git-smichaels@free5.projectlocker.com:helloworld.git
 ! [rejected]        HEAD -> master (non-fast forward) error:
 failed to push some refs to 'git-smichaels@free5.projectlocker.com:helloworld
git'
Run Code Online (Sandbox Code Playgroud)

所以我找到了另一个关于"修改提交"的StackOverflow问题,并从那里尝试了一个建议而不知道它是否会对我有所帮助:

KaiserSosa@SMICHAELS /c/test/helloworld (master)
$ git push helloworld +master:master
Run Code Online (Sandbox Code Playgroud)

有效!

但我不知道为什么它解决了我的问题:(

有人可以解释为什么这有效,但" git push helloworld"不是吗?

git git-push

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

如何从gitlab中完全删除提交?

我在git repo中提交了一个提交,并推送了它,但是不小心它包含了我们生产机器的一些密码。所以我删除了提交:

git reset --hard HEAD~1
git push --force
Run Code Online (Sandbox Code Playgroud)

确实确实从提交列表中删除了提交,但是gitlab上的提交网址仍然显示了提交的来源。

我不确定这是git仍将提交内容保存在gitlab服务器上,还是gitlab数据库以某种方式存储提交内容,但是我确实需要从gitlab服务器中完全删除该提交。

有谁知道从gitlab完全删除提交及其内容的方法吗?

git commit git-reset gitlab

6
推荐指数
1
解决办法
2753
查看次数

git checkout感到困惑

我是git的新手,并试图围绕分支的工作方式.根据文档git checkout

更新工作树中的文件以匹配索引或指定树中的版本.如果>没有给出路径,git checkout也会更新HEAD以将指定的分支设置为>当前分支.

所以据我所知,我工作的目录中的文件(我执行git init的文件)应该根据我所在的分支进行更改.我很困惑,因为当我在分支之间切换时不会发生这种情况.在切换分支之前我正在编辑的编辑存在于我切换到的分支中.我做错了什么或git checkout不能这样工作,我只是误解了文档?

git

4
推荐指数
2
解决办法
2699
查看次数

如何删除git remote上的提交?

如何在github.com托管的git远程上删除提交?我已经在SO上找到了多个答案,展示了如何从分支的提交历史中删除提交.我尝试了这些,但是我的提交仍然清晰可用,因为我可以使用其哈希直接浏览它.

所以为了清楚起见,我的问题不是如何从我的遥控器上所有分支的提交历史中删除提交.我的问题是如何删除提交本身,以便在我之前推送我的分支的git遥控器上没有它的记录.

我试过的解决方案包括:

从远程git存储库中删除最后一次提交

通过1次提交回滚本地和远程git存储库

编辑: Git:从远程分支永久删除一些提交是另一个不适合我的解决方案.这个特定解决方案不起作用的原因是因为它保持"git push - 强制你修改的本地分支到远程.",它不会从远程删除提交,而只是从当前的提交历史中删除它们科.

git github git-commit

4
推荐指数
1
解决办法
789
查看次数

如何跨git提交历史删除敏感数据(API_KEY)?

我完成了一个需要我使用 api_key 的 android 项目。我在 build.gradle 文件中添加了 api 密钥,如下所示:

     buildTypes.each {
         it.buildConfigField "String", "MDB_API_KEY", "\"243248324293938243\"" 
     }
Run Code Online (Sandbox Code Playgroud)

(顺便说一句,这是一个随机数)

现在我完成了项目,我需要将其上传到 Github,以进行代码审查。在这样做之前,我被要求删除 api 密钥,我做到了

buildTypes.each {
     it.buildConfigField "String", "MDB_API_KEY", *putYaOwnApiKeyBrothar*
         }
Run Code Online (Sandbox Code Playgroud)

并承诺。

但是如果我将所有内容都推送到 Github,他们可以访问任何较旧的提交,并检索我的 api_key。

我见过类似的问题,解决方案似乎是 git filter-branch,但它似乎删除了整个提交历史记录中的特定文件。我只想删除密钥(或该行,就此而言),因为我希望 *putYaOwnApiKeyBrothar* 代码在我的所有提交中可用。(以防他们必须检查旧的)。

这甚至可能吗?有没有简单的方法?如果没有,我该怎么办?我傻吗?

git android github gradle

4
推荐指数
2
解决办法
2345
查看次数