gpt4 book ai didi

即使更改了几个文件,Git 也会推送整个项目。 AWS

转载 作者:太空狗 更新时间:2023-10-29 13:43:35 25 4
gpt4 key购买 nike

我正在使用 Git 通过 Elastic Beanstalk 将我们的应用程序推送到 AWS。 AWS 已经创建了执行此操作的方法,尽管根据我的理解,它不完全是一个传统的存储库。因此,例如,我无法从我的 Beanstalk 项目中pull

我对 push 期间发生的事情以及为什么有时它推送的数据比其他的多得多感到困惑。我的典型流程如下

//create, edit files
$ git add .
$ git commit -m "message here"
[master 7d38f1f] message here
5 files changed, 27 insertions(+), 19 deletions(-)
$ git aws.push
Counting objects: 5131, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (4930/4930), done.
Writing objects: 100% (5131/5131), 40.70 MiB | 391.00 KiB/s, done.
Total 5131 (delta 1487), reused 0 (delta 0)
remote: processing
To https://exampleLocation
+ 7f9d9dd...7d38f1f HEAD -> master (forced update)

现在我可能会编辑一些文件并进行另一次推送。这次它会更小/更快

$ git add .
$ git commit -m "message2"
[master e2f4412] message2
1 file changed, 1 insertion(+)
$ git aws.push
Counting objects: 9, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (5/5), 472 bytes | 0 bytes/s, done.
Total 5 (delta 3), reused 0 (delta 0)
remote:
To https//exampleLocation
7d38f1f..e2f4412 HEAD -> master

明天,当我进行第一次推送时,它可能会再次成为大推送......

This问题暗示只发送更改,在上面的例子中你可以看到这是真的。然而,明天我上类时,我的第一次推送可能与第一次推送类似。因此,有人正在忘记已更改的内容。我怎样才能记住它?

谢谢

最佳答案

我原来的回答错了。这是更新后的版本。

.git/config我们可以看到

[alias "aws.elasticbeanstalk"]
remote = !.git/AWSDevTools/aws.elasticbeanstalk.push --remote-url
push = !.git/AWSDevTools/aws.elasticbeanstalk.push

[alias "aws"]
push = !git aws.elasticbeanstalk.push

git aws.push.git/AWSDevTools/aws.elasticbeanstalk.push Ruby 脚本的调用,其中包含以下代码:

commit = opts[:commit] # if commit is specified with --commit
commit = 'HEAD' if commit.nil?

destined_env = opts[:env] || AWS::DevTools.environment()
if !destined_env.nil?
puts "Pushing to environment: #{destined_env}"
end
`git push -f #{remote} #{commit}:refs/heads/master`
status = $?.exitstatus
exit status

在您的第一个日志中,您会看到注释 - (强制更新),但您在第二个日志中看不到。让我们更深入地了解“强制更新”。

来自 git-push手册:

-f
--force
Usually, the command refuses to update a remote ref that is not an ancestor of the local ref used to overwrite it. This flag disables the check. This can cause the remote repository to lose commits; use it with care.

Remote ref 在至少两种情况下可能不是祖先:

  • 当它是 ref 本身时,当尝试推送相同的提交时
  • 当其他人更新远程存储库并且您的提交必须覆盖他们的更改时

我相信其中一个案例就是您的案例。

或者它可能是 AWS 工具中的错误。以前有 another issue ,在本地进行更改后,远程存储库不会更新。也许这就是解决方法 - 通过 push 使用强制。

我将更深入地研究这个问题,并在我获得更多信息后更新答案。

关于即使更改了几个文件,Git 也会推送整个项目。 AWS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21052774/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com