即使很少文件被更改,Git也会推送整个项目. AWS

我正在使用
Git通过Elastic Beanstalk将我们的应用程序推送到AWS. AWS已经创建了实现此目的的方法,尽管根据我的理解,它并不是一个传统的存储库.所以,例如,我无法从我的Beanstalk项目中获取.

我对推送过程中发生的事情感到困惑,为什么有时它会推送比其他数据更多的数据.我的典型过程如下

//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.

远程参考可能不是至少两种情况的祖先:

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

我相信其中一个案例是你的.

或者它可能是AWS工具中的错误.以前有another issue,在本地进行更改后,远程存储库未更新.也许这就是解决方法 – 用推力强行使用.

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

点赞