Pro Git book强烈建议遵守此规则:
不要重新定义存储库外部的提交。
有没有一种简单的方法可以确保您不会违反规则?例如一组Git命令?
我的意思是,如果您不确定是否发布了最近提交的全部或部分内容(可能您参与了几个使用Git的项目,而您刚刚切换回其中一个项目)。< / p>
或者这个问题可能只是废话?我不是Git专家。
答案 0 :(得分:2)
您可以通过将当前分支与上游分支进行比较,在本地存储库中获取“未删除”提交列表。例如:
$ git status
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
(use "git push" to publish your local commits)
nothing to commit, working directory clean
这告诉我们,我们有一个提交,我们还没有向上游推送。我们
可以使用git log
到这些提交的列表:
$ git log --oneline origin/master..master
bc9dacf added another file
因此,我们可以修改一个未发布的提交列表 在不影响任何合作者的情况下不顾一切。只要你限制 你自己也处于良好的状态。
当然,您的部分问题是关于自动执行此行为。
在rebase操作之前调用了一个pre-rebase
钩子,可用于强制执行此操作,但我想我会将其作为练习留给读者。我不相信这在实践中是个大问题。
如果您正在与之合作的上游项目具有工作流程 基于GitHub拉取请求,或Gerrit或类似的东西, 你不必担心:因为你永远不会推动 如果你有共享存储库,你的更改将被拒绝 设法以不兼容的方式重新定义本地存储库 与上游代码的状态。