相关疑难解决方法(0)

Git如何防止本地修改公共提交

我已经在我的git central repo服务器上添加了receive.denyNonFastforwards和receive.denyDeletes.现在我想阻止本地历史修改,如果提交已经被推送到中央仓库(就像默认情况下mercurial一样),我想我可以使用钩子但我找不到任何例子.

这是一个奇怪的配置吗?

这听起来像是一个基本的保护措施,任何使用git的人都应该激活,我对缺少示例钩子感到非常惊讶.

git git-rewrite-history

12
推荐指数
1
解决办法
327
查看次数

为什么我必须在更改提交消息后强制推送?

我读到有关如何修改提交消息的内容.接受的答案是:

如果您已经将提交推送到远程分支,那么您需要强制推送提交git push <remote> <branch> --force.

这是我的理解(也来自已接受的答案)git push --force将覆盖远程分支上的所有数据与本地数据.

为什么在更改提交消息后强制推送是必要的?如果我修改提交消息并试图在没有-f或者推送的情况下会发生什么--force

git push git-push

7
推荐指数
1
解决办法
4059
查看次数

Git - 何时使用强制推动

GIT - FORCE PUSH

谁能告诉我何时使用git push以及何时git push -f举例?

git

7
推荐指数
1
解决办法
5542
查看次数

与自己合并冲突

我前段时间有合并冲突,并且怀疑是我自己。现在我又遇到了同样的问题,这次我可以确定,我对冲突负责。

昨天我对分支进行了一些更改,然后进行commit了更改push。这是第一个,并且到目前为止仅提交到分支(本地和远程)。

今天,我做了一些更改(显然是在相同的文件中),添加了更改并commit --amend提交给push他们并尝试了。

这是我发生合并冲突的情况: Updates were rejected because the tip of your current branch is behind

我修复了更改,添加,提交并推送了它们。现在一切都好。

但是我想从我的错误中学习。这是什么错误?(我认为这与使用有关git commit --amend

git merge git-commit

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

将推送的分支恢复为具体提交

我已将dev分支(具有常量,有时不稳定的更改)合并到我们的主分支(我们存储已发布的稳定代码).我想将master分支恢复到之前的状态,就像从未发生与dev分支的合并一样(并且在将来我们合并dev分支时,我们现在将丢弃的所有更改将再次"合并").

这是主分支的当前状态,我希望它在HEAD上具有'professional-1.1.2'提交/标记.

主分支的状态

我试过了:

$ git revert -n professional-1.1.2..HEAD
fatal: Commit 9167e846a387c793edbc089c7ab6bd9eb8260456 is a merge but no -m option was given.
$ git revert -n -m 1 professional-1.1.2..HEAD
fatal: Mainline was specified but commit 380169097f35d07466640bc0db1b639278cd25fa is not a merge.
$ git revert -n -m 2 professional-1.1.2..HEAD
fatal: Mainline was specified but commit 380169097f35d07466640bc0db1b639278cd25fa is not a merge.
Run Code Online (Sandbox Code Playgroud)

经过一些研究后,我认为更好的选择是做一个git reset --hard professional-1.1.2git push --force作为Git的答案:如何忽略快进并将原点[branch]恢复到之前的提交?或者还原push'd git commit.其他开发人员在同一个办公室,他们永远不应该承诺任何东西(因为我不应该,但是......是的,我们没有每个分支的权限),所以告诉他们并做任何事都不是一个大问题需要采取的行动.

所以最后的问题是:git revert something或者git …

git git-revert git-reset

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

如何使'git push -f`"安全"

有没有办法使用git push -f,但origin/master自上次拉动后才变化?

我只想重新组织历史记录,而不是覆盖文件内容.

git

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

Git --force-with-lease 在分支中带有 + (refspec)

git push --force-with-lease origin +somebranch在当前的 Git 上, ,git push --force-with-lease origin somebranchgit push origin +somebranch(没有加号)之间有实质性区别吗?三个人似乎都在做同样的事情。

我试图寻找文档。我尝试查看文档中的refspec ,但我不知道是否存在差异,如果有的话,例如,当我想通过 拉到工作分支时git pull --rebase origin master,默认情况下应该更喜欢哪个。

git github

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